دموی رایگان

آموزش گام‌به‌گام بهینه‌سازی دیتابیس وردپرس

دلوین خیری مقدم خواندن ~۸ دقیقه سرعت و کارایی وردپرس
آموزش گام‌به‌گام بهینه‌سازی دیتابیس وردپرس
دیتابیس وردپرس از نسخه‌های پیشین نوشته‌ها، ترنزینت‌های منقضی، کامنت‌های اسپم و متاهای یتیم سنگین می‌شود و سنگینی‌اش را در کندی پنل مدیریت، بکاپ‌های بزرگ و کوئری‌های کند نشان می‌دهد. بهینه‌سازی دیتابیس وردپرس یک کار فصلی با شش قدم امن است: بکاپ کامل، ممیزی جدول‌ها، پاک‌سازی بارهای شناخته‌شده، پرهیز از خط قرمزها و سنجش قبل و بعد. در ادامه همان شش قدم و مرزهای امنش را می‌بینید.

دیتابیس لایه‌ای است که کاربر هرگز نمی‌بیند، اما هر بارگذاری از آن می‌گذرد؛ برای همین وقتی سنگین می‌شود، اول جایش را در پنل مدیریت نشان می‌دهد: ذخیرهٔ پیش‌نویس طول می‌کشد، فهرست سفارش‌ها دیر باز می‌شود و بکاپ روزانه از حد می‌گذرد. کاربر صفحه‌ها هنوز نسبتاً معمولی می‌بیند و مدیر نمی‌داند مشکل از کجاست.

یک انتظار درست هم قبل از شروع: بهینه‌سازی دیتابیس معمولاً سرعت ادراکی صفحه را به‌اندازهٔ کش و بهینه‌سازی تصاویر تغییر نمی‌دهد؛ ارزشش در سبک‌کردن زیربناست — کوئری‌های روان‌تر، بکاپ سبک‌تر و پنل مدیریت قابل‌تحمل. با همین انتظار وارد شش قدم شوید تا نتیجه را جا قضاوت نکنید.

دیتابیس وردپرس چرا و کجا سنگین می‌شود؟

وردپرس برای امنیت کار، از محتوا نسخه‌های پیشین ذخیره می‌کند و به‌طور پیش‌فرض سقفی برایشان تعیین نشده؛ در سایت‌های چندساله این یعنی صدها رکورد تکراری برای نوشته‌هایی که دیگر نیازی به نسخه‌های شمارهٔ ده‌شان نیست. کنارش ترنزینت‌های منقضی، کامنت‌های اسپم و زباله‌دان، متاهای یتیمِ محتوای حذف‌شده، لاگ‌های افزونه‌ها و جداولی که از افزونه‌های حذف‌شده به‌جا مانده‌اند، لایه‌به‌لایه جمع می‌شوند.

بار اضافهاز کجا می‌آیدنشانهٔ آن
نسخه‌های پیشین نوشته‌هاهر ذخیرهٔ مکرر در ویرایشگربزرگ‌شدن جدول نوشته‌ها
ترنزینت‌های منقضیکش موقت افزونه‌ها و قالبجدول گزینه‌های حجیم
کامنت اسپم و زباله‌دانفرم‌های باز بدون پالایشهزاران ردیف تأییدنشده
متای یتیم و جداول معلقحذف محتوا و افزونه بدون پاک‌سازیجدول‌هایی با نام افزونهٔ قدیمی

این فهرست، پنج بار شناخته‌شدهٔ سایت‌های وردپرسی است؛ سایت شما شاید فقط دو سه‌تای آن را داشته باشد.

نشانه‌ها را با خودِ سه ماه قبل مقایسه کنید، نه با سایت دیگری: زمان بازشدن پنل، حجم فایل بکاپ دیتابیس و زمان پاسخ سرور. به تجربهٔ ما هیچ‌کدام از این‌ها عدد بیرونی نمی‌خواهد؛ روندِ خودِ سایت، دقیق‌ترین هشدار است و وقتی هر سه نشانه هم‌زمان بد می‌شوند، وقت پاک‌سازی رسیده است.

یک نکته هم دربارهٔ سهم افزونه‌ها: هر افزونه‌ای که نصب می‌کنید، جدول و گزینه و ترنزینت خودش را به همین انبار اضافه می‌کند و حذف سادهٔ افزونه، همیشه همهٔ ردیف‌هایش را برنمی‌دارد. برای همین، سهم افزونه‌های فعال را هم در همان ممیزی ببینید؛ افزونه‌ای که کار مشخصی برای شما نمی‌کند، بی‌آنکه پاک‌سازی کنید، فقط سربار دیتابیس و ریسک امنیتی است. فهرست فعال‌ها را کنار برگهٔ نگهداری بگذارید؛ هر فصل یک‌بار مرورش کنید و موارد بی‌استفاده را با ابزار حذف کامل، جا خالی کنید.

بهینه‌سازی دیتابیس وردپرس در شش قدم امن

شش قدم پاک‌سازی امن
شش قدم یک فصل؛ بعد از هر قدم، تست فرم و سبد را جا نیندازید.

قدم اول همیشه بکاپ است، بدون استثنا: پاک‌سازی دیتابیس جایی است که یک انتخاب اشتباه، محتوا و تنظیمات را با هم می‌برد. روال بکاپ منظم وردپرس را اجرا کنید، فایل بکاپ را جای دیگری نگه دارید و یک بازیابی آزمایشی هم بگیرید؛ بکاپی که بازیابی‌اش را ندیده‌اید، بکاپ نیست.

قدم دوم ممیزی است: از phpMyAdmin یا ابزار هاست، حجم جدول‌ها را مرتب کنید و ببینید کدام جدول غیرعادی بزرگ است. قدم سوم پاک‌سازی نسخه‌های پیشین و خالی‌کردن زباله‌دان‌هاست؛ قدم چهارم حذف ترنزینت‌های منقضی. این دو قدم بیشترین حجم را معمولاً با کمترین ریسک آزاد می‌کنند.

قدم پنجم، متاهای یتیم و کامنت‌های اسپم است که با ابزارهای پاک‌سازی شناخته می‌شوند؛ قدم ششم بهینه‌سازی جدول‌هاست که در ساعات کم‌ترافیک و بدون کاربر فعال انجام شود. بعد از هر قدم یک تست کوتاه بدهید: ثبت فرم، ورود کاربر و اگر فروشگاه دارید یک سفارش آزمایشی؛ پاک‌سازی‌ای که بعدش فروشگاه را تست نکرده، تمام‌شده حساب نمی‌شود.

خط قرمزها؛ چه چیزی را هرگز پاک نکنید

خط قرمزهای پاک‌سازی
نامش را نمی‌دانید؟ امروز جایش پاک‌کردن نیست؛ در برگهٔ نگهداری بنویسید.

خط قرمز اول، جداول افزونه‌های فعال است؛ سفارش‌ها و مشتری‌های ووکامرس، پرونده‌های فرم‌سازها و تنظیمات افزونه‌های امنیتی این‌جا زندگی می‌کنند. حذف دستی ردیف در جدولِ افزونهٔ فعال، معادل جراحی بدون رادیوگرافی است؛ اگر جدولی بزرگ شده، اول بپرسید افزونهٔ صاحبش چه می‌گوید و داخل تنظیمات خودش ابزار پاک‌سازی دارد یا نه.

خط قرمز دوم، بهینه‌سازی جدول‌های بزرگ در پیک ترافیک است؛ عملیات بهینه‌سازی برای مدتی جدول را قفل می‌کند و در ساعات فروش یعنی توقف سفارش. خط قرمز سوم جدول کاربران و هر جدول اختصاصی‌ای است که اسمش برایتان آشنا نیست؛ این‌ها دارایی هستند، نه بار اضافه. حتی پاک‌سازی زباله‌دان‌ها و اسپم‌ها را هم از داخل پنل مدیریت انجام دهید، نه مستقیم در دیتابیس؛ وردپرس خودش این حذف‌ها را امن‌تر پردازش می‌کند و متا و پیوندهای مربوط را هم‌زمان مرتب نگه می‌دارد.

قاعدهٔ مادر این بخش: هر چیزی که «فعلاً» نمی‌دانید چیست، امروز جایش پاک‌کردن نیست. نام جدول را در برگهٔ نگهداری بنویسید، از سازندهٔ افزونه بپرسید یا در مستنداتش دنبالش بگردید و بعد از اطمینان برگردید. پاک‌سازی عجولانه تنها کاری در سئوی فنی است که برگشتش گاهی وجود ندارد.

پاک‌سازی با افزونه یا phpMyAdmin؟

مسیر افزونه‌ای برای اکثر مدیران درست‌ترین است: افزونهٔ پاک‌سازی معتبر، قبل از حذف پیش‌نمایش می‌دهد، محدود می‌کند و خطای انسانی را می‌گیرد. معیار انتخاب هم سه‌چیزی است: پیش‌نمایش حذف، سازگاری با نسخهٔ فعلی وردپرس و به‌روزرسانی منظم. افزونه‌ای که سال‌ها آپدیت نشده، خودش ریسک است نه راه‌حل.

مسیر phpMyAdmin کنترل کامل می‌دهد و کنترل کامل یعنی ریسک کامل: یک کوئری بی‌بندوبار با شرط اشتباه، نتیجه‌ای جبران‌ناپذیر دارد. اگر این مسیر را انتخاب کردید، فقط روی بکاپِ تازه، فقط با کوئری‌های محدود و دقیق و ترجیحاً اول روی محیط تست کار کنید؛ «امتحان می‌کنیم ببینیم چه می‌شود» این‌جا جملهٔ ممنوعه است و هر دستور را با شرط دقیق و نتیجهٔ پیش‌بینی‌شده اجرا کنید.

ترکیب پیشنهادی ما برای تیم‌های کوچک: روال فصلی با افزونه، و موارد خاص — مثل جدول معلق یک افزونهٔ حذف‌شده — با دستور دقیق و مستند. هرگز دو مسیر را هم‌زمان اجرا نکنید و وسط کار روش را عوض نکنید؛ پرش بین ابزارها، همان‌جایی است که ردپای‌ها گم می‌شود.

نگهداری دوره‌ای؛ جلوی سنگین‌شدن دوباره را بگیرید

جلوی تکرار را از همان منابع بگیرید: سقف نسخه‌های پیشین را در تنظیمات وردپرس تعیین کنید تا از این به بعد هر نوشته چند نسخهٔ معقول نگه دارد، نه بی‌نهایت. نسخه‌ها را کلاً خاموش نکنید؛ آن‌ها در خطای انسانی نجات‌دهنده‌اند و مشکل، بی‌سقفی است نه وجودشان.

ریتم را فصلی نگه دارید نه هفتگی؛ پاک‌سازی مکرر کار اضافه می‌آورد و ریسک را بالا می‌برد، در حالی که بارها در یک فصل به‌سختی قابل‌لمس جمع می‌شوند. لاگ‌های افزونه‌ها را هم چرخه بدهید و هنگام حذف افزونهٔ بی‌استفاده، اگر گزینهٔ حذف کامل داده دارد، همان را انتخاب کنید تا جداول معلق به‌جا نماند.

بعد از هر پاک‌سازی، دو چک را در برگه ثبت کنید: تاریخ و حجم آزادشده، و نتیجهٔ تست فرم و سبد خرید. همین دو سطر ساده، سال بعد به شما می‌گوید کدام فصل سنگین‌تر بود و کدام افزونه بار اضافه می‌آورد؛ برگه‌ای که نیست، حافظه‌ای که نیست و هر فصل از صفر تصمیم می‌گیرید.

اثر را درست بسنجید؛ دیتابیس لایهٔ پشتی است

اثر را با مقایسهٔ قبل و بعد بسنجید: زمان بارگذاری پنل مدیریت، زمان پاسخ سرور و حجم فایل بکاپ دیتابیس؛ هر سه را قبل از شروع ثبت کنید و همان‌ها را بعد از پاک‌سازی تکرار کنید. برای اثر در ترافیک، روند نمایش و کلیک سرچ‌کنسول در چند هفتهٔ بعد معیار است، نه نوسان یک روز.

صادقانه بگوییم: ادراک سرعت کاربر بیشتر از کش وردپرس و بهینه‌سازی تصاویر تغذیه می‌شود و نقش قالب سبک هم پررنگ است؛ دیتابیس در پشتی است — پایداری کوئری‌ها، مقیاس‌پذیری در ترافیک بالا و سبکی زیرساخت. برای همین عدد پاک‌سازی دیتابیس را با وعدهٔ سرعتِ معجزه‌آسا مقایسه نکنید؛ لایه‌های مکمل‌اند، نه رقیب، و هرکدام معیار سنجش خودش را دارد.

انتظار واقعی این است: پنل مدیریت روان‌تر، بکاپ‌ها سبک‌تر و زیربنایی که هنگام رشد ترافیک دیرتر به دیوار می‌خورد. اثر ترکیبی همین لایه‌هاست که سرعت واقعی می‌سازد؛ پاک‌سازی دیتابیس یک‌بار انجام می‌شود و تا فصل بعد بی‌سروصدا کارش را می‌کند.

جمع‌بندی؛ روال فصلی سه‌چکی

روال فصلی سه‌چکی را روی تقویم بگذارید: بکاپ کامل قبل از هر کاری؛ پاک‌سازی با پیش‌نمایش و پرهیز از خط قرمزها؛ سنجش قبل و بعد و ثبت در برگهٔ تاریخ‌دار. همین سه سطر، بهینه‌سازی دیتابیس را از کاری ترسناک به یک عادت نگهداری تبدیل می‌کند که هر فصل نیم‌ساعت می‌گیرد و سال، چند ساعت پنلِ کند را پس می‌دهد. اگر دفعهٔ اول چند قدم را جا انداختید، اشکال ندارد؛ فصل بعد با برگهٔ دقیق‌تر شروع می‌کنید و همین تدریج، همان چیزی است که نگهداری را از اضطرار جدا می‌کند.

اگر ترجیح می‌دهید این نگهداری را برون‌سپاری کنید، قابلیت‌های پلتفرم بخشی از زنجیره را خودکار می‌کند، معرفی کامل ویژن‌پرایم سوئیت تصویر کل را می‌دهد، ممیزی رایگان دامنه نقطهٔ شروع است و صفحهٔ قیمت‌های شفاف اعداد را بی‌ابهام می‌گوید. به تجربهٔ ما سایت‌هایی که نگهداری زیربنایشان تقویم‌دار است، هنگام رشد کمتر غافلگیر می‌شوند؛ چون فصل‌به‌فصل سبک مانده‌اند، نه اینکه یک‌شبه «چربی‌سوزی» کنند. همین‌جا کارتان تمام است: بکاپ، پاک‌سازی آگاهانه، سنجش و ثبت؛ بقیه، تکرار همان روی تقویم است.

دموی رایگان پلتفرم

پلن پیشرو — ۷٫۹ میلیون تومان/ماه (انتشار خودکار + اپراتور)

دموی رایگان پلتفرم

رصد ما، رشد شما.

سؤالات پرتکرار

دیتابیس را کی باید بهینه کنم؟

وقتی پنل مدیریت کند شده، بکاپ‌ها بزرگ‌تر از حد شده یا زمان پاسخ سرور بالا رفته؛ وگرنه روال فصلیِ پیشگیرانه کافی است.

حذف نسخه‌های پیشین نوشته‌ها ضرر ندارد؟

نه اگر قبلش بکاپ کامل گرفته باشید؛ نسخه‌ها پیش‌نویس‌های ذخیره‌شده‌اند و حذفشان فقط سابقهٔ ویرایش را کوتاه می‌کند. سقف معقول بگذارید، کلاً خاموش نکنید.

افزونهٔ پاک‌سازی یا phpMyAdmin؟

برای مبتدی افزونهٔ معتبرِ با پیش‌نمایش حذف امن‌تر است؛ phpMyAdmin کنترل کامل می‌دهد ولی یک کوئری اشتباه جبران‌ناپذیر است و فقط با بکاپ تازه و محیط تست.

چرا بعد از پاک‌سازی سرعت خیلی تغییر نکرد؟

طبیعی است؛ ادراک سرعت بیشتر از کش، تصاویر و قالب تغذیه می‌شود. بهینه‌سازی دیتابیس زیربنا را سبک می‌کند — پنل، بکاپ و مقیاس — نه معجزهٔ سرعت لحظه‌ای.

پاک‌سازی با فروشگاه ووکامرسی تداخل ندارد؟

اگر جداول سفارش و کاربر را دست نزنید، خارج از ساعات فروش کار کنید و بعدش یک سفارش آزمایشی بزنید، امن است؛ وسط کمپین فروش پاک‌سازی نکنید.