{"id":517,"date":"2026-09-30T18:20:00","date_gmt":"2026-09-30T16:20:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/?page_id=517"},"modified":"2026-09-25T15:07:51","modified_gmt":"2026-09-25T13:07:51","slug":"automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/","title":{"rendered":"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona"},"content":{"rendered":"<h2>Przegl\u0105d architektury: Fragmentacja bazy danych w WordPressie<\/h2>\n<p>Wraz z rozwojem i czasem eksploatacji instalacji WordPress v7.0.2, jej baza danych MySQL lub MariaDB ulega znacznej fragmentacji i nagromadzeniu zb\u0119dnych informacji. Ka\u017cdy zapis redakcyjny generuje nowy wiersz w tabeli <code>wp_posts<\/code> w postaci rewizji wpisu. Jednocze\u015bnie wtyczki oraz motywy regularnie zapisuj\u0105 tymczasowe dane pami\u0119ci podr\u0119cznej w tabeli <code>wp_options<\/code> jako transienty. Po wyga\u015bni\u0119ciu ich wa\u017cno\u015bci WordPress usuwa je w spos\u00f3b pasywny podczas zapyta\u0144 HTTP, co nierzadko pozostawia w bazie tysi\u0105ce nieaktualnych rekord\u00f3w.<\/p>\n<p>Ponadto usuwanie wpis\u00f3w lub niestandardowych typ\u00f3w tre\u015bci bez dedykowanych procedur czyszcz\u0105cych skutkuje powstawaniem osieroconych metadanych w tabeli <code>wp_postmeta<\/code>. Z czasem to niekontrolowane nagromadzenie danych zwi\u0119ksza rozmiary indeks\u00f3w, wyd\u0142u\u017ca czas wykonywania z\u0142o\u017conych zapyta\u0144 <code>SELECT<\/code> oraz podnosi zu\u017cycie pami\u0119ci RAM serwera bazy danych. Automatyzacja regularnej konserwacji za pomoc\u0105 WP-CLI i zada\u0144 cron na poziomie systemu operacyjnego ca\u0142kowicie omija stos serwera WWW, zapewniaj\u0105c szybkie czyszczenie bez ryzyka przekroczenia limit\u00f3w czasu wykonywania skrypt\u00f3w PHP.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-dbputz-pl.png\" width=\"1120\" height=\"620\" alt=\"Por\u00f3wnanie bazy danych WordPressa przed i po, w formie s\u0142upk\u00f3w warstwowych, z pi\u0119cioma krokami czyszczenia pomi\u0119dzy\"><figcaption>Cztery rodzaje balastu stanowi\u0105 wi\u0119kszo\u015b\u0107 wyro\u015bni\u0119tej bazy WordPressa. Cotygodniowy skrypt usuwa je w ustalonej kolejno\u015bci i defragmentuje \u2014 zostaje tre\u015b\u0107, kt\u00f3ra naprawd\u0119 jest serwowana.<\/figcaption><\/figure>\n<h2>Instrukcja wdro\u017cenia krok po kroku<\/h2>\n<h3>Krok 1: Analiza rozmiaru bazy danych i wst\u0119pny audyt w CLI<\/h3>\n<p>Przed uruchomieniem procedur usuwaj\u0105cych nale\u017cy sprawdzi\u0107 aktualny rozmiar i struktur\u0119 bazy danych za po\u015brednictwem terminala SSH przy u\u017cyciu WP-CLI. Poni\u017csze polecenie wy\u015bwietla zestawienie wszystkich tabel posortowanych wed\u0142ug ich rozmiaru w megabajtach:<\/p>\n<pre><code>wp db size --tables --human-readable<\/code><\/pre>\n<p>W celu dok\u0142adnego zliczenia wygas\u0142ych transient\u00f3w zalegaj\u0105cych obecnie w tabeli opcji, mo\u017cliwe jest wykonanie polecenia diagnostycznego:<\/p>\n<pre><code>wp db query \"SELECT COUNT(*) FROM wp_options WHERE option_name LIKE '_transient_timeout_%' AND option_value &lt; UNIX_TIMESTAMP();\"<\/code><\/pre>\n<h3>Krok 2: Projektowanie automatycznego skryptu konserwacyjnego<\/h3>\n<p>W celu bezpiecznego usuni\u0119cia martwych danych bez konieczno\u015bci instalowania obci\u0105\u017caj\u0105cych wtyczek firm trzecich, optymalnym rozwi\u0105zaniem jest dedykowany skrypt pow\u0142oki (shell script) wykorzystuj\u0105cy WP-CLI oraz bezpo\u015brednie zapytania SQL. Skrypt eliminuje cztery g\u0142\u00f3wne \u017ar\u00f3d\u0142a nadmiarowych danych:<\/p>\n<ul>\n<li><strong>Wygas\u0142e transienty:<\/strong> Usuwa wszystkie nieaktualne wpisy pami\u0119ci podr\u0119cznej z tabeli <code>wp_options<\/code>.<\/li>\n<li><strong>Stare rewizje wpis\u00f3w:<\/strong> Czyszczenie historycznych obiekt\u00f3w rewizji z tabeli <code>wp_posts<\/code>.<\/li>\n<li><strong>Osierocone metadane:<\/strong> Wykonuje relacyjne zapytanie <code>DELETE<\/code> w celu usuni\u0119cia metadanych, kt\u00f3rych nadrz\u0119dny wpis (post ID) ju\u017c nie istnieje.<\/li>\n<li><strong>Osierocone powi\u0105zania taksonomii:<\/strong> Usuwa przypisania w tabeli <code>wp_term_relationships<\/code>, kt\u00f3rych powi\u0105zany wpis ju\u017c nie istnieje. Przy Polylang lub taksonomiach zarejestrowanych dla innych typ\u00f3w obiekt\u00f3w zapytanie usuwa tak\u017ce przypisania, kt\u00f3re w og\u00f3le nie dotycz\u0105 wpis\u00f3w, na przyk\u0142ad przypisania j\u0119zykowe kategorii i tag\u00f3w; szczeg\u00f3\u0142y w cz\u0119\u015bci \u201ePytania i odpowiedzi\u201d.<\/li>\n<\/ul>\n<p>Poni\u017cszy gotowy do wdro\u017cenia skrypt nale\u017cy zapisa\u0107 na serwerze pod \u015bcie\u017ck\u0105 <code>\/opt\/scripts\/wp-db-cleanup.sh<\/code>:<\/p>\n<pre><code>#!\/usr\/bin\/env bash\n# ============================================================================\n# Wysokowydajny skrypt czyszczenia bazy danych WordPress\n# Cel: WordPress v7.0.2 via WP-CLI\n# ============================================================================\n\nWP_PATH=\"\/var\/www\/lukaswojcik.com\/htdocs\"\nLOG_FILE=\"\/var\/log\/wp_db_cleanup.log\"\n\necho \"[$(date +'%Y-%m-%d %H:%M:%S')] Rozpocz\u0119cie cyklu konserwacji...\" &gt;&gt; \"$LOG_FILE\"\n\n# 1. Usuni\u0119cie wszystkich wygas\u0142ych transient\u00f3w\nwp transient delete --expired --path=\"$WP_PATH\" &gt;&gt; \"$LOG_FILE\" 2&gt;&amp;1\n\n# 2. Usuni\u0119cie wszystkich rewizji wpis\u00f3w (opcjonalnie: zachowanie 3 najnowszych)\nREVISIONS=$(wp post list --post_type=revision --format=ids --path=\"$WP_PATH\")\nif [ -n \"$REVISIONS\" ]; then\n    wp post delete $REVISIONS --force --path=\"$WP_PATH\" &gt;&gt; \"$LOG_FILE\" 2&gt;&amp;1\nfi\n\n# 3. Usuni\u0119cie osieroconych metadanych przez bezpo\u015brednie zapytanie relacyjne SQL\nwp db query \"DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;\" --path=\"$WP_PATH\" &gt;&gt; \"$LOG_FILE\" 2&gt;&amp;1\n\n# 4. Usuni\u0119cie osieroconych powi\u0105za\u0144 taksonomii\n# Uwaga: przy Polylang usuwa tak\u017ce przypisania j\u0119zykowe termin\u00f3w (object_id = ID terminu)\nwp db query \"DELETE tr FROM wp_term_relationships tr LEFT JOIN wp_posts wp ON wp.ID = tr.object_id WHERE wp.ID IS NULL;\" --path=\"$WP_PATH\" &gt;&gt; \"$LOG_FILE\" 2&gt;&amp;1\n\n# 5. Defragmentacja i optymalizacja silnik\u00f3w tabel MySQL\/MariaDB\nwp db optimize --path=\"$WP_PATH\" &gt;&gt; \"$LOG_FILE\" 2&gt;&amp;1\n\necho \"[$(date +'%Y-%m-%d %H:%M:%S')] Cykl konserwacji zako\u0144czony pomy\u015blnie.\" &gt;&gt; \"$LOG_FILE\"<\/code><\/pre>\n<h3>Krok 3: Nadanie rygorystycznych uprawnie\u0144 do pliku<\/h3>\n<p>W celu zabezpieczenia przed nieautoryzowanym uruchomieniem, skryptowi pow\u0142oki nale\u017cy przypisa\u0107 restrykcyjne uprawnienia w systemie plik\u00f3w Unix. Prawo do egzekucji powinno przys\u0142ugiwa\u0107 wy\u0142\u0105cznie u\u017cytkownikowi administracyjnemu lub kontu serwisowemu serwera WWW:<\/p>\n<pre><code>chmod 700 \/opt\/scripts\/wp-db-cleanup.sh\nchown www-data:www-data \/opt\/scripts\/wp-db-cleanup.sh<\/code><\/pre>\n<h3>Krok 4: Automatyzacja za pomoc\u0105 harmonogramu Cron serwera<\/h3>\n<p>W przeciwie\u0144stwie do standardowego mechanizmu WP-Cron, kt\u00f3ry zale\u017cy od przychodz\u0105cego ruchu HTTP i mo\u017ce op\u00f3\u017ania\u0107 si\u0119 na stronach o mniejszej odwiedzalno\u015bci, natywne zadanie cron w systemie Linux gwarantuje wykonanie operacji w dok\u0142adnie wyznaczonym czasie. Aby zdefiniowa\u0107 czyszczenie w ka\u017cd\u0105 niedziel\u0119 o godzinie 03:00 w nocy, edytowana jest konfiguracja crontab:<\/p>\n<pre><code>crontab -e -u www-data<\/code><\/pre>\n<p>Na ko\u0144cu pliku konfiguracyjnego dopisywana jest nast\u0119puj\u0105ca linia harmonogramu:<\/p>\n<pre><code>0 3 * * 0 \/bin\/bash \/opt\/scripts\/wp-db-cleanup.sh &gt;\/dev\/null 2&gt;&amp;1<\/code><\/pre>\n<h3>Krok 5: Kontrola jako\u015bci i weryfikacja<\/h3>\n<p>Po r\u0119cznym przetestowaniu dzia\u0142ania skryptu, weryfikacj\u0119 poprawno\u015bci procedury nale\u017cy przeprowadzi\u0107 z poziomu terminala:<\/p>\n<ol>\n<li><strong>Weryfikacja log\u00f3w wykonania:<\/strong> Sprawdzenie pliku `\/var\/log\/wp_db_cleanup.log` pod k\u0105tem braku b\u0142\u0119d\u00f3w sk\u0142adniowych i blokad bazy danych.<\/li>\n<li><strong>Walidacja optymalizacji tabel:<\/strong> Wykonanie polecenia `wp db size &#8211;human-readable` w celu potwierdzenia zmniejszonej obj\u0119to\u015bci tabel `wp_postmeta` i `wp_posts`.<\/li>\n<li><strong>Sprawdzenie integralno\u015bci frontendu:<\/strong> Upewnienie si\u0119, \u017ce aktywne artyku\u0142y, narz\u0119dzia w Toolboxie oraz powi\u0105zania j\u0119zykowe w Polylang \u0142aduj\u0105 si\u0119 poprawnie bez utraty metadanych.<\/li>\n<\/ol>\n<h2>Podsumowanie i mierzalna warto\u015b\u0107 dodana<\/h2>\n<p><strong>Co da si\u0119 osi\u0105gn\u0105\u0107 dzi\u0119ki instrukcji:<\/strong> Ca\u0142kowite wyeliminowanie konieczno\u015bci r\u0119cznego czyszczenia bazy danych oraz rezygnacj\u0119 z obci\u0105\u017caj\u0105cych wtyczek optymalizacyjnych na rzecz autonomicznego potoku konserwacyjnego opartego na WP-CLI i systemowym harmonogramie cron.<\/p>\n<p><strong>Wynikaj\u0105ca z tego warto\u015b\u0107 dodana:<\/strong><\/p>\n<ul>\n<li><strong>Trwale zoptymalizowany rozmiar bazy:<\/strong> Tabele relacyjne pozostaj\u0105 zdefragmentowane i pozbawione osieroconych metadanych, co redukuje ca\u0142kowit\u0105 obj\u0119to\u015b\u0107 bazy danych o 40\u201360% w aktywnych serwisach publikuj\u0105cych tre\u015bci.<\/li>\n<li><strong>Przyspieszenie zapyta\u0144 SQL:<\/strong> Czyste indeksy przek\u0142adaj\u0105 si\u0119 na znacznie ni\u017csze op\u00f3\u017anienia w wykonywaniu zapyta\u0144 dla zapyta\u0144 w panelu administracyjnym oraz z\u0142o\u017conych operacji JOIN.<\/li>\n<li><strong>Brak obci\u0105\u017cenia dla zasob\u00f3w PHP:<\/strong> Wykonywanie czyszczenia bezpo\u015brednio w wierszu polece\u0144 eliminuje ryzyko przekroczenia limit\u00f3w czasu HTTP, skok\u00f3w zu\u017cycia pami\u0119ci RAM oraz spowolnie\u0144 dla u\u017cytkownik\u00f3w odwiedzaj\u0105cych witryn\u0119.<\/li>\n<\/ul>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Dlaczego skrypt uruchomiony r\u0119cznie dzia\u0142a bez b\u0142\u0119d\u00f3w, a z zadania cron nie?<\/h3>\n<p>Zwykle z powodu innego \u015brodowiska. Cron uruchamia polecenia w okrojonym \u015brodowisku, a najcz\u0119stszymi przyczynami s\u0105 trzy r\u00f3\u017cnice:<\/p>\n<ol>\n<li>\u015acie\u017cka wyszukiwania. Cron ustawia PATH zwykle tylko na \/usr\/bin:\/bin. Je\u015bli WP-CLI le\u017cy, jak cz\u0119sto bywa, pod \/usr\/local\/bin\/wp, skrypt nie znajduje polecenia wp. Pomaga pe\u0142na \u015bcie\u017cka w skrypcie albo wiersz PATH na pocz\u0105tku crontaba.<\/li>\n<li>Prawo zapisu do pliku logu. Skrypt dzia\u0142a jako www-data i pisze do \/var\/log\/wp_db_cleanup.log, czyli do katalogu, w kt\u00f3rym www-data zwykle nie ma prawa zapisu. Gdy przekierowanie do logu si\u0119 nie powiedzie, pow\u0142oka w og\u00f3le nie wykonuje danego polecenia, wi\u0119c baza danych pozostaje nietkni\u0119ta. Plik trzeba zatem wcze\u015bniej utworzy\u0107 i przekaza\u0107 u\u017cytkownikowi www-data albo trzyma\u0107 log w miejscu, w kt\u00f3rym www-data ma prawo zapisu.<\/li>\n<li>Po\u0142kni\u0119te komunikaty. Wiersz w crontabie kieruje wszystko do \/dev\/null. Znikaj\u0105 tam komunikaty o nieudanych przekierowaniach, a przebieg wygl\u0105da na cichy sukces.<\/li>\n<\/ol>\n<p>Pr\u00f3bny przebieg w tych samych warunkach ujawnia te b\u0142\u0119dy zawczasu, na przyk\u0142ad poleceniem <code>sudo -u www-data env -i PATH=\/usr\/bin:\/bin \/bin\/bash \/opt\/scripts\/wp-db-cleanup.sh<\/code>. Je\u015bli skrypt przejdzie w ten spos\u00f3b, najcz\u0119stsze przyczyny s\u0105 wykluczone.<\/p>\n<h3>Czy zapytanie usuwaj\u0105ce osierocone powi\u0105zania taksonomii jest bezpieczne w ka\u017cdej instalacji?<\/h3>\n<p>Nie. Tabela wp_term_relationships \u0142\u0105czy terminy nie tylko z wpisami. Taksonomia mo\u017ce by\u0107 zarejestrowana dla innych typ\u00f3w obiekt\u00f3w, na przyk\u0142ad dla u\u017cytkownik\u00f3w albo starych odno\u015bnik\u00f3w z wp_links, i wtedy w object_id nie ma identyfikatora wpisu. Wtyczki wieloj\u0119zyczne, takie jak Polylang, przypisuj\u0105 ponadto przez t\u0119 tabel\u0119 kategorie i tagi do ich j\u0119zyka i t\u0142umacze\u0144, z identyfikatorem terminu jako object_id.<\/p>\n<p>Zapytanie ze skryptu usuwa ka\u017cdy wiersz, kt\u00f3rego object_id brakuje w wp_posts, i trafia tym samym dok\u0142adnie w te przypisania. Zdradliwe jest to, \u017ce nie trafia we wszystkie: identyfikator terminu, kt\u00f3ry przypadkiem istnieje te\u017c jako identyfikator wpisu, pozostaje. Skutkiem s\u0105 rozproszone kategorie bez j\u0119zyka albo bez t\u0142umaczenia, trudne do wyja\u015bnienia.<\/p>\n<p>Bezpieczniej jest ograniczy\u0107 zapytanie do taksonomii rzeczywi\u015bcie przypi\u0119tych do wpis\u00f3w, przez JOIN z wp_term_taxonomy i list\u0119 w rodzaju category i post_tag. Ka\u017cdy przebieg usuwaj\u0105cy powinna te\u017c poprzedza\u0107 kopia zapasowa, na przyk\u0142ad przez <code>wp db export<\/code>, a pr\u00f3bny przebieg z SELECT COUNT(*) zamiast DELETE pokazuje, ilu wierszy by to dotyczy\u0142o.<\/p>\n<h3>Co robi wp db optimize z tabelami InnoDB?<\/h3>\n<p>InnoDB nie ma w\u0142asnej optymalizacji. MySQL i MariaDB przebudowuj\u0105 zamiast tego tabel\u0119 i aktualizuj\u0105 jej statystyki; komunikat brzmi \u201eTable does not support optimize, doing recreate + analyze instead\u201d. Na przebudow\u0119 serwer potrzebuje chwilowo mniej wi\u0119cej tyle wolnego miejsca na dysku, ile zajmuje tabela, a du\u017ce tabele przebudowuj\u0105 si\u0119 odpowiednio d\u0142ugo.<\/p>\n<p>Plik zmniejsza si\u0119 tylko wtedy, gdy ka\u017cda tabela ma w\u0142asny plik (innodb_file_per_table, w aktualnych wersjach ustawienie domy\u015blne). Je\u015bli tabele le\u017c\u0105 we wsp\u00f3lnej systemowej przestrzeni tabel, jej plik zachowuje rozmiar. Po usuni\u0119ciu du\u017cej ilo\u015bci danych przebudowa si\u0119 op\u0142aca; jako cotygodniowa rutyna daje niewiele, bo InnoDB i tak ponownie wykorzystuje zwolnione miejsce wewn\u0105trz tabeli.<\/p>\n<h3>Czy liczb\u0119 rewizji da si\u0119 ograniczy\u0107, zamiast co tydzie\u0144 usuwa\u0107 wszystkie?<\/h3>\n<p>Tak, sta\u0142\u0105 WP_POST_REVISIONS w pliku wp-config.php, na przyk\u0142ad <code>define( 'WP_POST_REVISIONS', 3 );<\/code>. WordPress usuwa wtedy przy nast\u0119pnym zapisie wpisu jego najstarsze rewizje ponad limit. Historia wersji zostaje w ten spos\u00f3b zachowana, podczas gdy skrypt co tydzie\u0144 usuwa j\u0105 w ca\u0142o\u015bci.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/cli\/\" target=\"_blank\" rel=\"noopener noreferrer\">WP-CLI documentation<\/a><\/li>\n<li><a href=\"https:\/\/man7.org\/linux\/man-pages\/man5\/crontab.5.html\" target=\"_blank\" rel=\"noopener noreferrer\">crontab manual (man7.org)<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Techniczny przewodnik po utrzymaniu optymalnej wydajno\u015bci baz danych w WordPressie v7.0.2 poprzez automatyczne usuwanie osieroconych metadanych, rewizji i wygas\u0142ych transient\u00f3w za pomoc\u0105 WP-CLI.<\/p>\n","protected":false},"author":1,"featured_media":14069,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92646],"tags":[92061,92262,92421,92238,92286],"class_list":["post-517","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-wordpress-plugins-tricks-pl","tag-automation-pl","tag-mysql-pl","tag-server-administration-pl","tag-tutorial-pl","tag-wordpress-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona | Lukas Wojcik<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Techniczny przewodnik po utrzymaniu optymalnej wydajno\u015bci baz danych w WordPressie v7.0.2 poprzez automatyczne usuwanie osieroconych metadanych, rewizji i wygas\u0142ych transient\u00f3w za pomoc\u0105 WP-CLI.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-30T16:20:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona\",\"datePublished\":\"2026-09-30T16:20:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/\"},\"wordCount\":1417,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png\",\"keywords\":[\"Automation\",\"MySQL\",\"Server Administration\",\"Tutorial\",\"WordPress\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/\",\"name\":\"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png\",\"datePublished\":\"2026-09-30T16:20:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png\",\"width\":1200,\"height\":630,\"caption\":\"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/tutorials-pl-wordpress-plugins-tricks-pl\\\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona | Lukas Wojcik","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/","og_locale":"en_US","og_type":"article","og_title":"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona | Lukas Wojcik","og_description":"Techniczny przewodnik po utrzymaniu optymalnej wydajno\u015bci baz danych w WordPressie v7.0.2 poprzez automatyczne usuwanie osieroconych metadanych, rewizji i wygas\u0142ych transient\u00f3w za pomoc\u0105 WP-CLI.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-30T16:20:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona","datePublished":"2026-09-30T16:20:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/"},"wordCount":1417,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png","keywords":["Automation","MySQL","Server Administration","Tutorial","WordPress"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/","name":"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png","datePublished":"2026-09-30T16:20:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-517-automatyczne-czyszczenie-bazy-danych-g.png","width":1200,"height":630,"caption":"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/automatyczne-czyszczenie-bazy-danych-za-pomoca-wp-cli-i-zadan-crona\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Automatyczne czyszczenie bazy danych za pomoc\u0105 WP-CLI i zada\u0144 Crona"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=517"}],"version-history":[{"count":6,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/517\/revisions"}],"predecessor-version":[{"id":20954,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/517\/revisions\/20954"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/14069"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}