{"id":21119,"date":"2026-08-28T18:18:54","date_gmt":"2026-08-28T16:18:54","guid":{"rendered":"https:\/\/webhosting.de\/mariadb-undo-logs-administrator-guide-technik\/"},"modified":"2026-08-28T18:18:54","modified_gmt":"2026-08-28T16:18:54","slug":"mariadb-dzienniki-cofania-podrecznik-administratora-technika","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/mariadb-undo-logs-administrator-guide-technik\/","title":{"rendered":"Dzienniki cofania w MariaDB: podstawowe informacje dla administrator\u00f3w"},"content":{"rendered":"<p><strong>MariaDB Undo<\/strong> reguluje spos\u00f3b, w jaki InnoDB przechowuje stare wersje wierszy, bezpiecznie wykonuje cofni\u0119cia zmian oraz zapewnia sp\u00f3jne widoki odczytu podczas trwania operacji zapisu. Poka\u017c\u0119, jak dzienniki cofania (Undo Logs) wsp\u00f3\u0142dzia\u0142aj\u0105 z list\u0105 historii (History List) i funkcj\u0105 czyszczenia (Purge), dlaczego d\u0142ugie transakcje zajmuj\u0105 du\u017co pami\u0119ci oraz jak ograniczam wzrost <strong>Cofnij<\/strong>-kontroluj\u0119 te obszary.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<ul>\n  <li><strong>MVCC<\/strong> oraz sp\u00f3jne odczyty: funkcja cofania zapisuje poprzednie wersje, a czytniki nie blokuj\u0105 si\u0119.<\/li>\n  <li><strong>Lista historii<\/strong>: Operacje \u201ecommit\u201d dodaj\u0105 wpisy do historii, a \u201epurge\u201d je usuwa.<\/li>\n  <li><strong>D\u0142ugie transakcje<\/strong>: Zachowuj\u0105 stare wersje, obci\u0105\u017caj\u0105 pami\u0119\u0107 i powoduj\u0105 op\u00f3\u017anienia.<\/li>\n  <li><strong>Konfiguracja<\/strong>: Przestrzenie tabel typu \u201eUndo\u201d, w\u0105tki typu \u201ePurge\u201d oraz operacja \u201eTruncate\u201d kontroluj\u0105 wzrost.<\/li>\n  <li><strong>Monitoring<\/strong>: Nale\u017cy wcze\u015bnie sprawdzi\u0107 d\u0142ugo\u015b\u0107 historii, wiek transakcji oraz rozmiary operacji cofania.<\/li>\n<\/ul>\n\n<h2>W jaki spos\u00f3b dzienniki cofania umo\u017cliwiaj\u0105 stosowanie modelu MVCC<\/h2>\n\n<p>Zaczn\u0119 od sedna sprawy: ka\u017cda zmiana zapisuje poprzedni\u0105 wersj\u0119 wiersza w pliku <strong>Cofnij<\/strong>-Log, dzi\u0119ki czemu sp\u00f3jna migawka pozostaje nadal wa\u017cna. Odczytuj\u0105ce procesy korzystaj\u0105 z odpowiedniej starszej wersji, podczas gdy zapisuj\u0105ce procesy zapisuj\u0105 nowe dane i aktualizuj\u0105 indeksy; w ten spos\u00f3b <strong>R\u00f3wnoleg\u0142o\u015b\u0107<\/strong> Wysoko. Wiersze \u0142\u0105cz\u0105 si\u0119 ze swoimi poprzednikami, a\u017c do momentu, gdy funkcja Purge mo\u017ce je usun\u0105\u0107. Bez tego \u0142a\u0144cucha brakowa\u0142oby cofni\u0119\u0107 zmian, a widoki odczytu uleg\u0142yby zak\u0142\u00f3ceniu. W\u0142a\u015bnie w tym miejscu funkcja Undo stanowi pomost mi\u0119dzy bezpiecze\u0144stwem transakcji, izolacj\u0105 a niezawodnym dost\u0119pem do odczytu.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/mariadb-serverraum-admin-5847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wewn\u0119trzna struktura dziennik\u00f3w cofania<\/h2>\n\n<p>Je\u015bli chodzi o mechanik\u0119, rozr\u00f3\u017cniam przede wszystkim dwa rodzaje akcji \u201eUndo\u201d: <em>Wstaw \u2013 Cofnij<\/em> oraz <em>Cofni\u0119cie aktualizacji<\/em>. Funkcja \u201eInsert-Undo\u201d pozwala cofn\u0105\u0107 operacje wstawiania, kt\u00f3re nie zosta\u0142y jeszcze zatwierdzone. Cofanie aktualizacji (Update-Undo) zachowuje starsze wersje w przypadku zmian lub oznacze\u0144 do usuni\u0119cia, aby migawki mog\u0142y nadal dzia\u0142a\u0107. InnoDB pocz\u0105tkowo oznacza usuni\u0119te wiersze jedynie jako usuni\u0119te (Delete-Mark) i op\u00f3\u017ania ich faktyczne usuni\u0119cie do momentu, gdy \u017cadna migawka nie b\u0119dzie ju\u017c mog\u0142a ich wykry\u0107. To rozdzielenie ma kluczowe znaczenie: operacje cofania wymagaj\u0105 precyzyjnych stan\u00f3w poprzednich, podczas gdy czytelnicy sp\u00f3jno\u015bci musz\u0105 znale\u017a\u0107 wersj\u0119, kt\u00f3ra logicznie pasuje do ich momentu rozpocz\u0119cia. Dlatego wiersze odwo\u0142uj\u0105 si\u0119 wewn\u0119trznie do poprzedniej wersji, a indeksy zawieraj\u0105 dodatkowe informacje, aby funkcja \u201ePurge\u201d mog\u0142a p\u00f3\u017aniej poprawnie zaktualizowa\u0107 wpisy indeksowe.<\/p>\n\n<h2>Lista historii, czyszczenie i pami\u0119\u0107<\/h2>\n\n<p>Po ka\u017cdym zatwierdzeniu zmiany historyczne trafiaj\u0105 do globalnej <strong>Historia<\/strong> Lista, kt\u00f3r\u0105 w\u0105tek Purge usuwa asynchronicznie. Je\u015bli Purge nie nad\u0105\u017ca, lista ta ro\u015bnie i sztucznie utrzymuje przy \u017cyciu stare wersje wierszy. Powoduje to wi\u0119cej operacji odczytu, wi\u0119ksz\u0105 liczb\u0119 operacji wej\u015bcia\/wyj\u015bcia oraz wi\u0119ksze przestrzenie tabel Undo. W takich sytuacjach zawsze sprawdzam poziomy izolacji i otwarte migawki, poniewa\u017c niekorzystna <a href=\"https:\/\/webhosting.de\/pl\/mysql-poziom-izolacji-hosting-serwer-spojnosc-transakcje\/\">Wyb\u00f3r izolacji<\/a> przed\u0142u\u017ca \u017cywotno\u015b\u0107 starszych wersji. Kto spojrzy ca\u0142o\u015bciowo na tempo czyszczenia, d\u0142ugo\u015b\u0107 historii i aktywne transakcje, ten wcze\u015bnie wykryje w\u0105skie gard\u0142a i powstrzyma narastanie danych, zanim osi\u0105gnie ono krytyczny poziom.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/mariadb_undo_logs_meeting_2387.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Mechanizm czyszczenia i opcje regulacji<\/h2>\n\n<p>Funkcja \u201ePurge\u201d dzia\u0142a <em>\u201ebest effort\u201d<\/em>: Zbiera wpisy, kt\u00f3re mo\u017cna wyczy\u015bci\u0107, z listy historii, trwale usuwa oznaczenia do usuni\u0119cia, aktualizuje indeksy pomocnicze i zwalnia obszary cofania. W systemach o du\u017cej cz\u0119stotliwo\u015bci zmian skaluj\u0119 <strong>R\u00f3wnoleg\u0142o\u015b\u0107<\/strong> (np. za pomoc\u0105 kilku proces\u00f3w Purge-Worker) i dostosuj strategi\u0119 przetwarzania partiami tak, aby proces Purge dzia\u0142a\u0142 p\u0142ynnie, ale nie zbyt intensywnie. Og\u00f3lne zasady:<\/p>\n<ul>\n  <li>Kr\u00f3tkie, sta\u0142e partie zamiast rzadkich du\u017cych serii \u2013 to pozwala wyr\u00f3wna\u0107 operacje wej\u015bcia\/wyj\u015bcia i punkty kontrolne.<\/li>\n  <li>Nie nale\u017cy przeciwstawia\u0107 operacji \u201epurge\u201d pami\u0119ci lub opr\u00f3\u017cnianiu log\u00f3w: oba rozwi\u0105zania musz\u0105 by\u0107 r\u00f3wnie skuteczne.<\/li>\n  <li>Najpierw nale\u017cy rozwi\u0105za\u0107 d\u0142ugie migawki, zanim zwi\u0119ksz\u0119 rozmiar partii \u2013 w przeciwnym razie efekt p\u00f3jdzie na marne.<\/li>\n<\/ul>\n<p>Wa\u017cne: Funkcja \u201ePurge\u201d nie zast\u0119puje dobrej dyscypliny transakcyjnej. Nawet przy wysokim stopniu r\u00f3wnoleg\u0142o\u015bci operacja \u201eUndo\u201d pozostaje zablokowana, dop\u00f3ki istniej\u0105 stare migawki. Dlatego obserwuj\u0119 jednocze\u015bnie post\u0119p operacji \u201ePurge\u201d i wiek transakcji oraz koryguj\u0119 obci\u0105\u017cenie, je\u015bli operacja \u201ePurge\u201d stale pozostaje w tyle.<\/p>\n\n<h2>Konfiguracja przestrzeni tabel Undo<\/h2>\n\n<p>W zale\u017cno\u015bci od konfiguracji informacje o cofni\u0119ciu mog\u0105 znajdowa\u0107 si\u0119 w przestrzeni tabel systemowej lub w oddzielnych <strong>Cofnij<\/strong>-przestrzenie tabel. Ch\u0119tnie wyodr\u0119bniam obszar Undo, aby lepiej kontrolowa\u0107 wzrost i operacje wej\u015bcia\/wyj\u015bcia. Wiele instalacji pozwala na dynamiczny wzrost, cz\u0119\u015bciowo z mo\u017cliwo\u015bci\u0105 zwrotu miejsca za pomoc\u0105 polecenia `TRUNCATE`. Brzmi to wygodnie, ale zwi\u0119ksza konieczno\u015b\u0107 monitorowania, poniewa\u017c d\u0142ugie migawki uniemo\u017cliwiaj\u0105 szybkie zmniejszenie rozmiaru. Wybieram lokalizacj\u0119, rozmiar i r\u00f3wnoleg\u0142o\u015b\u0107 operacji czyszczenia w taki spos\u00f3b, aby tempo zmian i okna czasowe w codziennej eksploatacji by\u0142y odpowiednio uwzgl\u0119dnione oraz <strong>Przywr\u00f3cenie<\/strong> nie cierpi.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Ustawienie<\/th>\n      <th>Efekt<\/th>\n      <th>Wskaz\u00f3wka<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>innodb_undo_directory<\/td>\n      <td>Lokalizacja pliku <strong>Cofnij<\/strong>-pliki<\/td>\n      <td>Oddzielne no\u015bniki danych oddzielaj\u0105 operacje wej\u015bcia\/wyj\u015bcia<\/td>\n    <\/tr>\n    <tr>\n      <td>innodb_purge_threads<\/td>\n      <td>Wi\u0119cej <strong>Oczyszczenie<\/strong>-Pracownik zajmuj\u0105cy si\u0119 wydobyciem<\/td>\n      <td>W przypadku wysokiego wska\u017anika zmian nale\u017cy zwi\u0119kszy\u0107<\/td>\n    <\/tr>\n    <tr>\n      <td>innodb_undo_log_truncate<\/td>\n      <td>Odzyskuje niewykorzystan\u0105 przestrze\u0144<\/td>\n      <td>Dzia\u0142a tylko wtedy, gdy pole \u201eHistory\u201d jest puste<\/td>\n    <\/tr>\n    <tr>\n      <td>innodb_max_undo_log_size<\/td>\n      <td>Warto\u015b\u0107 graniczna wzrostu<\/td>\n      <td>Dost\u0119pno\u015b\u0107 zale\u017cy od wersji<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Uk\u0142ad pami\u0119ci i kwestie zwi\u0105zane z systemem plik\u00f3w<\/h2>\n\n<p>Oddzielne przestrzenie tabel Undo umieszczam najlepiej na szybkich dyskach SSD, oddzielnie od operacji wej\u015bcia\/wyj\u015bcia danych i dziennik\u00f3w. Je\u015bli system plik\u00f3w obs\u0142uguje funkcj\u0119 TRIM\/Discard, operacja Truncate mo\u017ce fizycznie zwr\u00f3ci\u0107 pami\u0119\u0107 systemowi operacyjnemu. Niemniej jednak planuj\u0119 z zachowaniem konserwatywnych limit\u00f3w, poniewa\u017c zwolnienie miejsca nie jest gwarantowane, dop\u00f3ki migawki wi\u0105\u017c\u0105 przestrze\u0144 \u201eUndo\u201d. R\u00f3wnie\u017c kompresja w systemie plik\u00f3w op\u0142aca si\u0119 tylko wtedy, gdy dost\u0119pna jest rezerwa mocy obliczeniowej procesora, a wzorce zapisu nie powoduj\u0105 fragmentacji. Wa\u017cne pozostaje obserwowanie szczyt\u00f3w op\u00f3\u017anie\u0144: je\u015bli obszar Undo ro\u015bnie na obci\u0105\u017conym no\u015bniku danych, stopniowo nasilaj\u0105 si\u0119 zjawiska amplifikacji zapisu i presja zwi\u0105zana z punktami kontrolnymi.<\/p>\n\n<h2>Monitorowanie i diagnostyka<\/h2>\n\n<p>Regularnie sprawdzam rozmiar <strong>Cofnij<\/strong>-przestrzenie tabel, d\u0142ugo\u015b\u0107 listy historii oraz wiek otwartych transakcji. Polecenia SHOW ENGINE InnoDB STATUS, Performance-Schema i Information-Schema dostarczaj\u0105 jasnych wskaz\u00f3wek. Je\u015bli obszary Undo rosn\u0105, a operacja Purge przynosi niewielkie korzy\u015bci, w pierwszej kolejno\u015bci zamykam stare sesje. Dodatkowo sprawdzam blokady, poniewa\u017c niepotrzebne <a href=\"https:\/\/webhosting.de\/pl\/blokowanie-wierszy-w-bazie-danych-mysql-wspolbieznosc-optymalizacja-wydajnosci-blokady\/\">Blokady wios\u0142a<\/a> przed\u0142u\u017caj\u0105 czas trwania transakcji i tworzenia migawek. Kto codziennie monitoruje te wska\u017aniki, zapobiega nag\u0142ym skokom obci\u0105\u017cenia we\/wy i skraca \u015bcie\u017cki w <strong>Pami\u0119\u0107<\/strong>.<\/p>\n\n<h2>Konsekwencje wydajno\u015bciowe d\u0142ugotrwa\u0142ych transakcji<\/h2>\n\n<p>Przed\u0142u\u017canie d\u0142ugotrwa\u0142ych operacji odczytu lub zapisu <strong>Wersje<\/strong> na sta\u0142e, nawet je\u015bli s\u0105 logicznie nieaktualne. Powoduje to nadmierne rozrosty funkcji Undo, wyd\u0142u\u017ca skanowanie i zwi\u0119ksza obci\u0105\u017cenie pami\u0119ci podr\u0119cznej. Ograniczam te skutki poprzez kr\u00f3tsze partie, konsekwentne stosowanie COMMIT oraz limity czasu dla sesji. Raporty, kt\u00f3rych odczytanie trwa wiele godzin, dzia\u0142aj\u0105 lepiej w mniejszych oknach lub w oparciu o repliki. Kto wy\u0142\u0105czy funkcj\u0119 autocommit, usprawni plany zapyta\u0144 i zamknie transakcje w stanie bezczynno\u015bci, odci\u0105\u017ca proces Purge i zmniejsza obci\u0105\u017cenie <strong>Instancja<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/mariadb-undo-logs-insight-4723.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Segmenty cofania i r\u00f3wnoleg\u0142o\u015b\u0107<\/h2>\n\n<p>Wpisy funkcji cofania znajduj\u0105 si\u0119 w <em>Segmenty cofania<\/em>, kt\u00f3re niejako udost\u0119pniaj\u0105 sloty dla zmian aktywnych w tym samym czasie. Wiele r\u00f3wnoczesnych proces\u00f3w zapisuj\u0105cych czerpie korzy\u015bci z wystarczaj\u0105cej liczby segment\u00f3w cofania, poniewa\u017c w\u00f3wczas operacje wstawiania i aktualizacji rzadziej musz\u0105 dzieli\u0107 swoje \u0142a\u0144cuchy cofania. Obserwuj\u0119 wzorce oczekiwania na zasoby cofania i zwi\u0119kszam ich liczb\u0119 tam, gdzie pozwala na to wersja i dystrybucja. Objawami braku r\u00f3wnoleg\u0142o\u015bci s\u0105 nieoczekiwane czasy oczekiwania w fazach aktualizacji, kt\u00f3re w innym przypadku by\u0142yby kr\u00f3tkie, lub silne wahania op\u00f3\u017anie\u0144 zapisu pod obci\u0105\u017ceniem. Wi\u0119ksza liczba segment\u00f3w rozk\u0142ada obci\u0105\u017cenie, ale nie zmienia podstawowej zasady: d\u0142ugie migawki przewy\u017cszaj\u0105 wszelkie optymalizacje.<\/p>\n\n<h2>Poziomy izolacji \u2013 szczeg\u00f3\u0142owe informacje<\/h2>\n\n<p>Die <a href=\"https:\/\/webhosting.de\/pl\/mysql-poziom-izolacji-hosting-serwer-spojnosc-transakcje\/\">Poziom izolacji<\/a> okre\u015bla, jak d\u0142ugo wersje cofania maj\u0105 sens. W trybie REPEATABLE READ transakcja zachowuje swoj\u0105 migawk\u0119 pocz\u0105tkow\u0105 przez ca\u0142y czas trwania; cofanie pozostaje wi\u0119c potencjalnie zwi\u0105zane przez bardzo d\u0142ugi czas. W trybie READ COMMITTED okna widoku s\u0105 tworzone dla ka\u017cdego polecenia; w wielu obci\u0105\u017ceniach znacznie skraca to czas \u017cycia starych wersji. SELECT \u2026 FOR UPDATE i LOCK IN SHARE MODE nak\u0142adaj\u0105 blokady i zmieniaj\u0105 profil wsp\u00f3\u0142bie\u017cno\u015bci \u2013 jest to przydatne w zapobieganiu utraconym aktualizacjom, ale ma krytyczne znaczenie dla funkcji cofania, je\u015bli odczyty pozostaj\u0105 otwarte zbyt d\u0142ugo. Dlatego celowo stosuj\u0119 tryb READ COMMITTED tam, gdzie raporty lub odczyty z API wymagaj\u0105 sp\u00f3jnych, ale nieobejmuj\u0105cych ca\u0142ej transakcji widok\u00f3w, a pozostaj\u0119 przy trybie REPEATABLE READ, gdy wymaga tego logika biznesowa.<\/p>\n\n<h2>Scenariusze przywracania i uruchamiania<\/h2>\n\n<p>Podczas uruchamiania InnoDB wykorzystuje <strong>Cofnij<\/strong>-Informacje umo\u017cliwiaj\u0105ce prawid\u0142owe cofni\u0119cie niekompletnych transakcji. Zapewnia to sp\u00f3jno\u015b\u0107 widok\u00f3w przed rozpocz\u0119ciem pracy przez nowych klient\u00f3w. W szczeg\u00f3lnych przypadkach istniej\u0105 tryby uruchamiania, kt\u00f3re skracaj\u0105 procesy sprawdzania, ale stosuj\u0119 je wy\u0142\u0105cznie w sytuacjach awaryjnych. Czyste przyspieszenie bez diagnozy mo\u017ce mie\u0107 negatywne konsekwencje, poniewa\u017c integralno\u015b\u0107 danych ma pierwsze\u0144stwo. Kto ma na uwadze czas odzyskiwania i rozmiar operacji cofania, ten podejmuje lepsze decyzje dotycz\u0105ce okien konserwacyjnych i <strong>Ryzyko<\/strong>.<\/p>\n\n<h2>Zasady praktyczne dotycz\u0105ce administracji<\/h2>\n\n<p>Staram si\u0119, by transakcje by\u0142y kr\u00f3tkie, cz\u0119sto zapisuj\u0119 zmiany do pami\u0119ci tymczasowej i unikam nieko\u0144cz\u0105cych si\u0119 sesji odczytu, aby <strong>Oczyszczenie<\/strong> ma woln\u0105 drog\u0119. Wi\u0119ksze zmiany masowe dziel\u0119 na odpowiednio dobrane partie, aby lista historii nie ros\u0142a. Liczb\u0119 w\u0105tk\u00f3w czyszcz\u0105cych skaluj\u0119 w zale\u017cno\u015bci od tempa zmian i dostosowuj\u0119 uk\u0142ad funkcji cofania do sprz\u0119tu pami\u0119ciowego. Ponadto dokumentuj\u0119 procesy biznesowe, kt\u00f3re wymagaj\u0105 d\u0142ugich migawek, i \u015bwiadomie planuj\u0119 okna czasowe. Dzi\u0119ki temu wykorzystanie funkcji cofania pozostaje przewidywalne, a <strong>Op\u00f3\u017anienie<\/strong> niski.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/mdb_undologs_tech_office_3821.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wzorce obci\u0105\u017cenia i optymalizacja<\/h2>\n\n<p>Handel elektroniczny, raportowanie i systemy zarz\u0105dzania tre\u015bci\u0105 wi\u0105\u017c\u0105 si\u0119 z wieloma zmianami i wymagaj\u0105 zdyscyplinowanego podej\u015bcia <strong>Transakcje<\/strong>. Ustawiam ostro\u017cne limity czasu dla czytelnik\u00f3w, optymalizuj\u0119 indeksy pod k\u0105tem precyzyjnych aktualizacji i ograniczam rozmiary partii. Przy du\u017cym obci\u0105\u017ceniu zapisem zwi\u0119kszam r\u00f3wnoleg\u0142o\u015b\u0107 operacji czyszczenia i reguluj\u0119 cz\u0119stotliwo\u015b\u0107 tworzenia punkt\u00f3w kontrolnych. Ponadto sprawdzam szybko\u015b\u0107 zapisu w stosunku do <a href=\"https:\/\/webhosting.de\/pl\/logi-transakcji-bazy-danych-procesy-odzyskiwania-ochrona-bazy-danych-bezpieczny\/\">Dzienniki transakcji i odzyskiwanie danych<\/a>, aby proces odzyskiwania po awarii pozostawa\u0142 przewidywalny. Ta wsp\u00f3\u0142dzia\u0142anie pozwala na planowanie obj\u0119to\u015bci operacji cofania i chroni <strong>Sp\u00f3jno\u015b\u0107<\/strong>.<\/p>\n\n<h2>Kopie zapasowe i replikacja<\/h2>\n\n<p>Kopie zapasowe logiczne z konsystentnymi migawkami w spos\u00f3b wymuszony wyd\u0142u\u017caj\u0105 okres przydatno\u015bci starych wersji \u2013 lista operacji do cofni\u0119cia ro\u015bnie, dop\u00f3ki kopia zapasowa nie zostanie zako\u0144czona. Planuj\u0119 takie operacje poza okresami wzmo\u017conego obci\u0105\u017cenia, ograniczam liczb\u0119 jednoczesnych operacji zapisu i zapewniam wystarczaj\u0105c\u0105 pojemno\u015b\u0107 pami\u0119ci do czyszczenia. Kopie zapasowe fizyczne mog\u0105 zmniejszy\u0107 obci\u0105\u017cenie operacji cofania, ale nie zwalniaj\u0105 z obowi\u0105zku zachowania staranno\u015bci przy tworzeniu migawek. Na replikach preferuj\u0119 przechowywanie raport\u00f3w w trybie READ COMMITTED i zamykam d\u0142ugotrwa\u0142e transakcje bezczynno\u015bci, aby proces SQL-Apply nie pozostawa\u0142 w tyle. Je\u015bli replika pozostaje w tyle, wzrasta tam r\u00f3wnie\u017c obci\u0105\u017cenie operacji cofania, poniewa\u017c nadrabianie wielu operacji usuni\u0119cia\/aktualizacji generuje fal\u0119 historii, kt\u00f3r\u0105 funkcja czyszczenia musi najpierw przetworzy\u0107.<\/p>\n\n<h2>Podr\u0119cznik: Jak szybko powstrzyma\u0107 wzrost liczby operacji cofania<\/h2>\n\n<ul>\n  <li>Identyfikacja aktywnych u\u017cytkownik\u00f3w: sprawd\u017a otwarte transakcje i sesje z du\u017cymi zestawami wynik\u00f3w.<\/li>\n  <li>Konsekwentne zamykanie bezczynnych transakcji: sprawd\u017a, czy w\u0142\u0105czona jest funkcja autocommit, i zamknij zapomniane kursory.<\/li>\n  <li>Zwi\u0119kszenie wydajno\u015bci czyszczenia: w\u0142\u0105czenie dodatkowych proces\u00f3w roboczych i umiarkowane zwi\u0119kszenie rozmiaru partii.<\/li>\n  <li>Optymalizacja dzia\u0142ania Writer: ograniczenie wielko\u015bci partii, wprowadzenie mikro-commit\u00f3w.<\/li>\n  <li>Wykorzystaj okna serwisowe: przenie\u015b du\u017ce fale usuwania\/aktualizacji do zaplanowanych przedzia\u0142\u00f3w czasowych.<\/li>\n  <li>Po ustabilizowaniu sytuacji: zezw\u00f3l na cofanie skracania, a\u017c rozmiar systemu plik\u00f3w ponownie b\u0119dzie odpowiada\u0142 potrzebom.<\/li>\n<\/ul>\n\n<h2>Planowanie wydajno\u015bci funkcji cofania<\/h2>\n\n<p>Obliczam czas cofania (Undo) ostro\u017cnie, na podstawie wska\u017anika zmian, \u015bredniej wielko\u015bci wiersza i maksymalnego okna migawki. Proste przybli\u017cenie: liczba zdarze\u0144 zmian na sekund\u0119 \u00d7 \u015bredni \u0142adunek danych \u00d7 planowane okno migawki w sekundach. Nale\u017cy uwzgl\u0119dni\u0107 margines bezpiecze\u0144stwa dla indeks\u00f3w i metadanych. Ta zasada praktyczna pozwala zorientowa\u0107 si\u0119 w zapotrzebowaniu w najgorszym scenariuszu i chroni przed niespodziankami podczas generowania raport\u00f3w, tworzenia kopii zapasowych lub migracji. <em>w tym samym czasie<\/em> Tworzenie migawek. W rozbudowuj\u0105cych si\u0119 systemach co kwarta\u0142 sprawdzam, czy zmiany w obci\u0105\u017ceniu (nowe funkcje, wi\u0119ksza liczba klient\u00f3w mobilnych, wi\u0119ksze szczyty obci\u0105\u017cenia) wp\u0142ywaj\u0105 na zmiany zapotrzebowania.<\/p>\n\n<h2>Przypadki szczeg\u00f3lne: tabele tymczasowe i DDL<\/h2>\n\n<p>Tymczasowe tabele InnoDB wykorzystuj\u0105 w\u0142asne obszary; zmiany w nich wprowadzane w mniejszym stopniu obci\u0105\u017caj\u0105 standardow\u0105 funkcj\u0119 cofania (Undo), ale przy du\u017cych operacjach sortowania lub \u0142\u0105czenia mog\u0105 mimo to generowa\u0107 du\u017ce obci\u0105\u017cenie operacji wej\u015bcia\/wyj\u015bcia (I\/O). Operacje DDL, takie jak ALTER TABLE, cz\u0119sto powoduj\u0105 ogromne fale zmian \u2013 w razie potrzeby dziel\u0119 je na etapy przyrostowe i planuj\u0119 je w spokojnych okresach. R\u00f3wnie\u017c w tym przypadku obowi\u0105zuje zasada: kr\u00f3tkie, przejrzyste transakcje s\u0105 lepszym rozwi\u0105zaniem ni\u017c ryzykowne skr\u00f3ty. Je\u015bli operacja DDL zostanie przerwana, mechanizm Undo pomaga przywr\u00f3ci\u0107 sp\u00f3jny stan; wymaga to jednak wystarczaj\u0105cej ilo\u015bci pami\u0119ci i czasu, kt\u00f3re planuj\u0119 z wyprzedzeniem.<\/p>\n\n<h2>Przyk\u0142ad: Pomiar skutk\u00f3w<\/h2>\n\n<p>Zaczn\u0119 od zrzutu stanu bazowego wielko\u015bci funkcji cofania, kt\u00f3ry <strong>Historia<\/strong>-d\u0142ugo\u015bci i \u015bredniego czasu trwania transakcji. Nast\u0119pnie wprowadzam ukierunkowane zmiany, takie jak zwi\u0119kszenie liczby w\u0105tk\u00f3w czyszcz\u0105cych lub zmniejszenie rozmiar\u00f3w partii. Nast\u0119pnie por\u00f3wnuj\u0119 wska\u017aniki, a\u017c wzrost operacji cofania i op\u00f3\u017anienia osi\u0105gn\u0105 zdrow\u0105 r\u00f3wnowag\u0119. Je\u015bli natrafi\u0119 na warto\u015bci odstaj\u0105ce, przegl\u0105dam plany zapyta\u0144 i listy sesji, aby zidentyfikowa\u0107 zawieszone procesy odczytu. Ten cykliczny proces zapewnia szybkie efekty bez <strong>Dost\u0119pno\u015b\u0107<\/strong> zagrozi\u0107.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/mariadb_undo_logs_9876.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Cz\u0119ste b\u0142\u0119dne przekonania<\/h2>\n\n<p>Commit nie usuwa starych wersji od razu; <strong>Oczyszczenie<\/strong> decyzj\u0119 podejmuje dopiero p\u00f3\u017aniej. Opcje `TRUNCATE` nie rozwi\u0105zuj\u0105 podstawowego problemu projektowego, gdy transakcje trwaj\u0105 zbyt d\u0142ugo. Du\u017ce pliki cofania niekoniecznie oznaczaj\u0105 uszkodzenie danych; cz\u0119sto przyczyn\u0105 jest zablokowanie jednej sesji. Chocia\u017c sesje odczytu rzadko blokuj\u0105 sesje zapisu, to jednak nieodpowiednie zapytania po\u015brednio wyd\u0142u\u017caj\u0105 czas tworzenia migawek. Kto wyeliminuje te b\u0142\u0119dy, podejmie lepsze decyzje i ograniczy <strong>Przestoje<\/strong>.<\/p>\n\n<h2>Podsumowanie dla tych, kt\u00f3rzy si\u0119 spiesz\u0105<\/h2>\n\n<p>Prowadzenie dziennik\u00f3w cofania <strong>Przesz\u0142o\u015b\u0107<\/strong> w zasi\u0119gu r\u0119ki, aby InnoDB m\u00f3g\u0142 bezpiecznie cofa\u0107 transakcje, a u\u017cytkownicy mieli sta\u0142y wgl\u0105d w dane. Kontroluj\u0119 wzrost poprzez optymalizacj\u0119 transakcji, odpowiednie skonfigurowanie w\u0105tk\u00f3w czyszcz\u0105cych oraz rozs\u0105dne rozmieszczenie przestrzeni tabel \u201eundo\u201d. Monitorowanie d\u0142ugo\u015bci historii, rozmiar\u00f3w obszar\u00f3w cofania oraz wieku transakcji pozwala wcze\u015bnie wykrywa\u0107 trendy. W przypadku nieprawid\u0142owo\u015bci sprawdzam obci\u0105\u017cenie, blokady i sesje, zamiast skupia\u0107 si\u0119 na samych objawach. Kto dba o t\u0119 rutyn\u0119, utrzymuje wydajno\u015b\u0107, sp\u00f3jno\u015b\u0107 i <strong>ponowne uruchomienie<\/strong> pod pe\u0142n\u0105 kontrol\u0105.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/mariadb-undo-logs-4982.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>","protected":false},"excerpt":{"rendered":"<p>Wyja\u015bnienie dziennik\u00f3w cofania w MariaDB: wewn\u0119trzne dzia\u0142anie InnoDB, cofanie zmian, MVCC oraz porady administracyjne dotycz\u0105ce wydajno\u015bci i stabilno\u015bci.<\/p>","protected":false},"author":1,"featured_media":21112,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[781],"tags":[],"class_list":["post-21119","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenbanken-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"143","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"MariaDB Undo","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21112","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=21119"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21119\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21112"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}