امروز : ۱۸ تیر ۱۴۰۵ (2026/07/09)

افزایش سرعت دیتابیس وردپرس؛ آموزش کامل بهینه‌ سازی Database

همیشه یکی از مشکلاتی که کاربران سایت های وردپرسی با آن رو به رو می باشند کند بودن یا کند شدن به مرور سایت های وردپرسی می باشد.

سیستم مدیریت محتوا وردپرس با وجود اینکه نیاز به دانش کدنویسی ندارد و امروزه در دنیا به شدت محبوب می باشد اما همچنان کند شدن آن یکی از معضلات اصلی هست که اگر درست مدیریت نشود به یکی از معضلات جدی بدل خواهد شد!

کند شدن یک سایت وردپرسی فقط به این معنا نیست که کاربران قرار است چند ثانیه بیشتر برای لود شدن صفحه منتظر بمانند! کاهش سرعت سایت می تواند تجربه کاربری بدی را به همراه داشته باشد و امروزه که در هر زمینه ای فعالیت داشته باشید سایت های مشابه شما زیاد می باشند کاربران ممکن است از سایت شما خارج شوند و به سایت رقیبان بروند!

بنابراین ساده می توان گفت کند شدن سایت نرخ خروج را بالا می برد٬ فروش فروشگاه های اینترنتی را کاهش می دهد و حتی گوگل هم دیگر روی سایت شما برای رتبه های بالاتر حساب نمی کند و رتبه ی شما افت پیدا خواهد کرد.

وقتی سرعت سایت افت می کند و صفحات داخلی با تاخیر باز می شوند پیدا کردن علت آن یکی قدم بسیار بلند برای حل مشکل می باشد.

عوامل زیادی وجود دارد که باعث می شود وردپرس شما کند شود؛ از انتخاب هاست نامناسب٬ استفاده از افزونه های سنگین٬ تصاویر بهینه نشده٬ تعداد درخواست های بالای قالب و عدم کدنویسی استاندارد٬ عدم استفاده از کش و … که در مقالات متعدد به آن ها اشاره کردیم اما بخشی که کمتر به آن توجه می شود ولی عموما یکی از تاثیرگذارترین علت های کندی می باشد دیتابیس وردپرس می باشد.

دیتابیس ها به عنوان بخشی که تمام اطلاعات سایت را در خود نگهداری می کنند هر بار که کاربر صفحه ای را باز می کند نقش بسیار مهمی در پاسخگویی به آن درخواست ها دارد!

دیتابیس را می توان به عنوان مخزن اصلی اطلاعات وردپرس در نظر گرفت. نوشته ها٬ برگه ها٬ کاربران٬ دیدگاه ها٬ تنظیمات سایت٬ اطلاعات افزونه ها و در فروشگاه هایی که برپایه ووکامرس ساخته شدند٬ محصولات٬ سفارش ها و اطلاعات مشتریان همه و همه در دیتابیس ذخیره می شود.

وردپرس برای نمایش هر صفحه٬ دریافت تنظیمات یا نمایش محتوای مورد نیاز٬ باید اطلاعات لازم را از پایگاه داده بازیابی کند؛ بنابراین عملکرد دیتابیس تاثیر مستقیمی بر سرعت پاسخگویی سایت دارد.

هرچه سایت بزرگتر و قدیمی تر می شود حجم داده های دیتابیس هم بالا می رود٬ اگر این داده ها به درستی مدیریت و بهینه سازی نشوند٬ زمان اجرای درخواست ها بیشتر می شود و سرعت پاسخگویی کاهش پیدا می کند. این موضوع را به طور‌ ويژه می توان در سایت های پرترافیک و فروشگاه های ووکامرسی که اطلاعات جدید در آن ها ثبت می شود بیشتر مشاهده کرد.

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

 

 

چرا دیتابیس روی سرعت سایت تاثیر دارد؟

این تصور که هر بار سایت باز می شود و یا کاربران وارد صفحات مختلف سایت می شوند سرور تنها فایل های سایت را اجرا می کند ابدا صحیح نیست.

برای نمایش محتوای هر صفحه باید اطلاعات مورد نیاز از دیتابیس دریافت شود. عنوان نوشته٬ متن مقاله٬ اطلاعات نویسنده٬ تنظیمات سایت٬ دیدگاه ها٬ منوها و محصولات ووکامرسی و خیلی از داده های دیگر همگی از دیتابیس خوانده می شود و به صورت یک صفحه وب واحد به کاربر نمایش داده می شود.

تمام این فرآيند ها و دریافت داده ها از دیتابیس در کسری از ثانیه رخ می دهد و طبیعی هست تا زمانی که این پاسخگویی در کسری از ثانیه باشد٬ کاربران شما هم کندی احساس نخواهند کرد ولی به مرور که حجم دادها افزایش پیدا می کند و یا دیتابیس بهینه نباشد مدت زمان اجرای Query نیز بیشتر خواهد شد٬ در نتیجه سرور زمان بیشتری را صرف دریافت اطلاعات می کند و این تاخیر مستقیم روی سرعت بارگذاری صفحات اثر می گذارد.

برای درک بهتر عملکرد دیتابیس٬ آن را کتابخانه ای بزرگ در نظر بگیرید که کتاب ها به درستی در دسته بندی های منظم در قفسه های مربوط به خود قرار گرفته اند در این شرایط پیدا کردن یک کتاب تنها چند لحظه زمان می برد اما اگر همه کتاب ها بدون نظم و ترتیب روی قفسه های مختلف قرار گرفته باشند پیدا کردن همان کتاب زمان بیشتری نیاز دارد. دیتابیس وردپرس نیز به همین شکل عمل می کند هر چه داده ها سازمان یافته تر و ساختار جداول بهینه تر باشد اطلاعات هم سریعتر بازیابی و Query ها سریعتر پاسخ داده می شود.

تاثیر عملکرد دیتابیس در سایت های فروشگاهی و پرترافیک حتی بیشتر است. برای مثال در یک فروشگاه ووکامرسی هنگام باز کردن صفحه محصول٬ سیستم باید علاوه بر اطلاعات اصلی محصول٬ قیمت٬ موجودی٬ تصاویر٬ ویژگی ها٬ اطلاعات سبد خرید و داده های زیاد دیگری را از دیتابیس دریافت کند اگر این درخواست ها با تاخیر اجرا شوند کاربر نیز کندی سایت را به شکل کاملا واضح احساس می کند.

البته گفتن این نکته خالی از لطف نیست که دیتابیس تنها عامل موثر بر سرعت نیست. کیفیت هاست٬ میزان منابع سرور٬ نسخه PHP ٬ نوع وب سرور٬ سیستم کش و بهینه بودن قالب و استفاده کم از افزونه ها هم نقش بسیار مهمی دارند اما با این حال اگر دیتابیس دچار مشکل باشد حتی استفاده از سخت افزارهای بسیار قدرتمند هم نمی تواند شما را از کندی های وحشتناکی که برای شما رخ می دهد نجات دهد. به همین دلیل یکی از اقدامات مهمی که برای حفظ عملکرد سایت به ویژه در پروژه های بزرگ و فروشگاه های ووکامرس باید توجه کرد بهینه سازی دیتابیس می باشد.

 

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

وردپرس برای ذخیره و مدیریت اطلاعات از یک پایگاه داده MySQL یا MariaDB استفاده می کند و تمام اطلاعات سایت را در آن ذخیره می کند.

زمانی که سایت باز می شود این اطلاعات دریافت می شوند و در نهایت صفحه به کاربر نمایش داده می شود بنابراین هرچه تعداد درخواست ها یا داده ها بیشتر باشد و جداول هم بهینه نباشند زمان پاسخگویی افزایش پیدا می کند.

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

در ادامه به چند Table مهم اشاره خواهیم کرد.

 

جدول wp_posts:

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

هر بار که صفحه از سایت یا یک محصول ووکامرس نمایش داده می شود وردپرس ابتدا اطلاعات اصلی آن را از این جدول دریافت می کند.

 

جدول wp_postmeta:

اطلاعات تکمیلی مربوط به نوشته ها و محصولات در جدول wp_postmeta ذخیره می شود برای مثال:

قیمت محصول٬ موجودی کالا٬ تصویر شاخص٬ ویژگی محصولات٬ تنظیمات افزونه ها برای هر نوشته و فیلد های سفارشی در این جدول ذخیره می شود.

در سایت های وردپرسی این جدول معمولا یکی از بزرگترین٬ سنگین ترین و پرترافیک ترین جدول های دیتابیس است و در صورتی که داده ها بیش از حد افزایش پیدا کنند می تواند تاثیر قابل توجهی روی سرعت سایت داشته باشد.

 

جدول wp_options:

جدول مهم دیگر در وردپرس جدول wp_options می باشد. این جدول همانطور که از نام آن پیداست شامل تنظیمات کلی وردپرس و افزونه ها است.

اطلاعاتی نظیر آدرس سایت٬ قالب فعال٬ افزونه های نصب شده٬ تنظیمات افزونه ها٬ داده های موقتی و گزینه های Autoload در این جدول ذخیره می شوند.

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

 

جدول wp_users:

جدول wp_users هم که از نام آن مشخص هست اطلاعات کاربران سایت را نگهداری می کند این اطلاعات شامل مواری مانند نام کاربری٬ رمز عبور رمزنگاری شده٬ ایمیل٬ تاریخ ثبت نام٬ وضعیت حساب و … می باشد.

در سایت های فروشگاهی که ترافیک بالایی دارند با عضویت بالا تعداد کاربران این بخش هم حاوی اطلاعات زیادی خواهد شد اما چون اطلاعات تکمیلی کاربران در جدول wp_usermeta ذخیره می شود عموما این بخش تبدیل به یک معضل نمی شود.

 

جدول wp_comments:

تمام دیدگاه هایی که در زیر محصولات یا قسمت وبلاگ سایت های وردپرسی توسط کاربران درج می شود در جدولی به نام wp_comments ذخیره می شود.

علاوه بر متن دیدگاه٬ اطلاعات مانند نام نویسنده٬ ایمیل٬ تاریخ ثبت و وضعیت تایید نظرات هم در این جدول ذخیره می شود.

در سایت هایی که تعداد زیادی دیدگاه یا هرزنامه دارند بزرگ شدن این جدول می تواند روی عملکرد دیتابیس تاثیر بگذارد و عملکرد را به شکل محسوس کاهش دهد.

 

اگرچه وردپرس از جداول دیگری هم استفاده می کند اما بخش قابل توجهی از درخواست های پایگاه داده به همین چند جدول مربوط می شود به همین دلیل بسیاری از روش های بهینه سازی که در خصوص جداول وردپرس منتشر می شوند به همین چند جدول اکتفا می کنند که در ادامه مقاله با این روش ها آشنا خواهیم شد.

 

علائم کند بودن دیتابیس وردپرس:

تشخیص اینکه کندی یک سایت وردپرسی از دیتابیس هست یا خیر خیلی ساده نیست! بسیاری از مدیران سایت در ابتدا تصور می کنند کندی ها پیش آمده ناشی از قالب یا افزونه می باشد و اگر منابع هاست هم درگیر باشد طبیعی هست که کم بودن منابع هم یکی از علت ها رایج هست.

اما همیشه مشکلات پیش آمده را نمی توان به قالب یا افزونه ها ربط داد! گاهی مشکل پیش آمده از دیتابیس و کند شدن Query ها می باشد که پاسخ را با تاخیر فراوان در اختیار سایت قرار می دهند.

در ادامه به چند مورد از علامت هایی که می تواند نشان دهد کندی های پیش آمده ممکن است از دیتابیس باشد اشاره خواهیم کرد و بهتر است در این شرایط وضعیت دیتابیس هم مورد بررسی قرار بگیرد.

 

 

افزایش TTFB:

TTFB که همان مخفف Time To First Byte یا زمان دریافت اولین بایت می باشد. مدت زمانی هست که سرور برای اولین پاسخ به کاربر صرف می کند.

اگر دیتابیس برای اجرای کوئری‌ ها به زمان بیشتری نیاز داشته باشد سرور نیز دیرتر پاسخ می دهد و مقدار TTFB افزایش پیدا می کند.

عموما نبود سیستم کش هم می تواند TTFB را افزایش دهد ولی اگر افزونه کش را نصب دارید و از صحت عملکرد قالب و افزونه ها هم اطمینان دارید این بالا بودن می تواند از دیتابیس سرچشمه بگیرد.

البته به طور قاطع نمی توان گفت همیشه بالا بودن TTFB به معنای وجود مشکل در دیتابیس هست اما اگر همزمان با افزایش حجم سایت یا ووکامرس این شاخص بیشتر دیده شود احتمالا بخشی از این تاخیر به عملکرد پایگاه داده مربوط می شود.

 

کند شدن پیشخوان وردپرس:

یکی از اولین نشانه های اینکه دیتابیس کند شده هست٬ پایین آمد سرعت پنل مدیریت وردپرس می باشد. اگر باز شدن بخش هایی مانند نوشته ها٬ محصولات٬ سفارش های ووکامرس یا تنظیمات افزونه ها بیش از اندازه طول می کشد معمولا تعداد زیاد درخواست های دیتابیس یا اجرای کوئری‌ های سنگین یکی از دلایل آن می باشد.

این مشکل معمولا در سایت هایی که مدت زمان زیادی هست که مشغول فعالیت می باشند یا افزونه های متعدد نصب کرده اند بیشتر هم دیده می شود.

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

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

 

تأخیر در جستجو:

گاهی کاربران و یا مدیر وب سایت در بخش وبلاگ یا محصولات اقدام به جستجو یک مقاله یا یک محصول می کند و مشاهده می کند پاسخ به این جستجو با تاخیر انجام می شود.

این تاخیر حتی در بخش پیشخوان در قسمت نوشته ها هم کاملا به شکل محسوس دیده می شود و این موارد می تواند از مشکلات دیتابیس ناشی که در پیدا کردن اطلاعات مورد نیاز زمان زیادی را صرف می کند!

در فروشگاه های اینترنتی که هزاران محصول دارند این موضوع از اهمیت بالایی برخوردار هست چون هر جستجو نیازمند اجرای چندین Query روی جداول مختلف می باشد.

 

کند شدن ووکامرس:

ووکامرس حجم قابل توجهی از اطلاعات را در دیتابیس ذخیره می کند٬ از محصولات و ویژگی ها گرفته تا سفارش ها٬ اطلاعات مشتریان و موجودی کالا٬ با افزایش تعداد محصولات و سفارش ها٬ تعداد درخواست های دیتابیس بیشتر هم می شود.

اگر جدیدا احساس می کنید صفحه محصولات٬ دسته بندی ها٬ سبد خرید یا بخش مدیریت سفارش ها نسبت به گذشته کندتر شده است احتمال دارد دیتابیس دیگر مانند قبل قادر به پاسخگویی سریع نباشد و به بهینه سازی نیاز داشته باشد.

برای تست افزونه هایی که به صورت جانبی برای ووکامرس نصب کردید که ویژگی های خاصی را به محصول اضافه می کنند یا سیستم نمره دهی به محصول می باشند را موقتا غیرفعال کنید و وضعیت را مجدد چک کنید شاید مشکل کندی ناشی از نصب افزونه های جانبی هم باشد.

اگر بعد این تست مشکل حل نشد احتمالا دیتابیس شما دیگر مانند گذشته سریع نیست و بهینه سازی در این شرایط اجتناب ناپذیر هست.

 

افزایش مصرف CPU هاست:

اگر دیتابیس ها از حالت بهینه و سریع خود خارج شوند تاثیری که دارند تنها مربوط به کندی صفحات مختلف یا پیشخوان نیست! بلکه منابع هاست شما هم مشاهده خواهید کرد که بیشتر از قبل درگیر شده در شرایطی که شما ورودی بیشتری پیدا نکردید.

زمانی که اجرای کوئری‌ های دیتابیس بیش از حد طول بکشد٬ سی پیو سرور مدت بیشتری درگیر پردازش ها خواهد بود و به همین دلیل افزایش غیرعادی سی پیو یکی از نشانه های وجود کوئری‌ های سنگین یا ساختار غیربهینه دیتابیس می باشد.

ارتقا هاست و در اختیار گرفتن منابع بیشتر برای سایت خود فقط به عنوان یک مسکن عمل می کند و نمی تواند مشکل را درمان کند.

اگر در کنار بالا رفتن مصرف CPU ٬ افزایش TTFB و کند شدن بخش های مختلف سایت را هم مشاهده می کنید بهتر است عملکرد دیتابیس هم با دقت مورد بررسی قرار بگیرد چون در خیلی از موارد دیده شده بهینه سازی پایگاه داده فشار را از روی سرور کاهش داده و سرعت را بهبود بخشیده است.

 

15 روش افزایش سرعت دیتابیس وردپرس:

پس از اینکه اطمینان حاصل کردیم مشکلات کندی رخ داده ناشی از عملکرد دیتابیس می باشد٬ نوبت به بررسی راهکار هایی می رسد که می تواند عملکرد دیتابیس را بهبود دهد.

برخلاف تصور خیلی از کاربران بهینه کردن دیتابیس همیشه نیاز به انجام تغییرات پیچیده یا استفاده از ابزارهای تخصصی ندارد در بسیاری از موارد تنها با حذف داده های غیرضروری٬ بهینه سازی جدول ها٬ مدیریت صحیح افزونه ها و استفاده از قابلیت هایی مانند کش٬ می توان زمان اجرای Query ها را کاهش داد و سرعت پاسخگویی سایت را به شکل فوق العاده ای بالا برد.

البته نباید از این موضوع غافل شد که تاثیر هر روش به شرایط سایت هم بستگی دارد! شاید راهکاری که روی یک وبلاگ شخصی نتیجه محدودی دارد٬ ممکن است در یک فروشگاه ووکامرس با هزاران محصول و سفارش٬ تاثیر قابل توجهی بر عملکرد سایت بگذارد.

برای همین بهتر است همیشه بهینه سازی دیتابیس را در چک لیست کارهایی که باید انجام دهید داشته باشید نه اینکه یکبار انجام شود و به دست فراموشی سپرده شود تا کندی مجدد رخ داد و بخواهید دوباره از نو این مراحل را تکرار کنید.

بهینه سازی یک فرآیند مستمر هست که اگر همیشه به صورت منظم بررسی و چک شود می تواند سایت را در وضعیت ایده آل نگه دارد.

در ادامه می خواهیم به 15 روش مهم و موثر افزایش سرعت دیتابیس وردپرس اشاره کنیم. از راهکار های ساده که تنها چند دقیقه زمان نیاز دارند تا اقداماتی که می تواند تاثیر بسیار خوبی بر عملکرد سایت های پرترافیک و فروشگاه های ووکامرسی داشته باشد.

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

 

1- حذف Revision های اضافی:

یکی از ویژگی های وردپرس که به صورت پیش فرض در این سیستم فعال می باشد این است که هنگام ویرایش نوشته ها و برگه ها٬ نسخه مختلفی از آن را به عنوان Revision یا بازنگری ذخیره می کند.

این قابلیت به مدیر وب سایت کمک می کند در صورت بروز اشتباه یا حذف بخشی از محتوا٬ بتواند به نسخه های قبل بازگردد. هرچند این ویژگی بسیار کاربردی هست و ممکن است برای مدیران وب سایت به دفعات رخ دهد که از این قابلیت استفاده کنند اما اگر تعداد بازنگری ها کنترل نشود به مرور حجم زیادی از دیتابیس را اشغال می کند.

برای مثال فرض کنید یک مقاله را در طی روز چندین مرتبه ویرایش کردید و وردپرس 50 نسخه مختلف از آن را ذخیره کرده است. حال اگر سایت شما صدها مقاله داشته باشد تعداد رکورد های جدول wp_posts و wp_postmeta به سرعت افزایش پیدا می کند و هرچه این جدول ها بزرگتر می شود اجرای برخی درخواست های دیتابیس نیز به زمان بیشتری نیاز دارد و در نتیجه عملکرد دیتابیس کم می شود.

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

همچنین پیشنهاد می شود از ایجاد تعداد نامحدود Revision جلوگیری کنید. برای این کار کافی هست فقط کد زیر را در فایل wp-config.php قرار دهید تا وردپرس از این پس فقط تعداد مشخصی از بازبینی ها را برای هر نوشته نگهداری کند.

 

define('WP_POST_REVISIONS', 10);

به شکل تصویر زیر می توانید این کار را انجام دهید.

 

 

در کد بالا تنها 10 نسخه آخر هر نوشته ذخیره می شود و نسخه های قدیمی تر به صورت خودکار حذف می شود اگر سایت شما به طور مداوم محتوای جدید منتشر می کند این کار از رشد بی رویه دیتابیس در بلند مدت جلوگیری می کند.

نکته: در نظر داشته باشید که قرار دادن کد بالا تنها بازنگری های جدید را تحت تاثیر قرار می دهد و محدود می کند و نسخه های قدیمی که تاکنون در سایت شما قرار گرفته است را حذف نمی کند. بنابراین اگر دیتابیس شما در حال حاضر تعداد Revision زیادی دارد بهتر است ابتدا آن ها را با استفاده از یک افزونه معتبر مانند WP-Optimize یا سایر ابزارهای مدیریت دیتابیس حذف کنید سپس محدودیت تعداد بازنگری ها را با کد بالا اعمال کنید تا افزایش حجم دیتابیس ناشی از بازنگری ها دوباره رخ ندهد.

 

2- حذف Auto Draft های اضافی:

یکی دیگر از قابلیت های وردپرس که به صورت اتوماتیک در زمان ایجاد یک نوشته یا برگه جدید وجود دارد در واقع Auto Draft می باید.

وردپرس با کمک این قابلیت به صورت خودکار یک پیش نویس موقت ایجاد می کند تا در صورت بسته شدن ناگهانی مرورگر یا قطع اتصال٬ بخشی از اطلاعات از بین نرود.

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

اگر شما تعداد نویسندگان مختلفی در سایت دارید و یا روزانه محتوای زیادی منتشر می کنید تعداد Auto Draft ها به مرور افزایش پیدا می کند و حجم جدول wp_posts را بیشتر می کند.

هرچند وجود چند Auto Draft تاثیر محسوس و خاصی روی عملکرد وب سایت ندارد اما وقتی این Auto Draft ها به مرور افزایش پیدا می کند در کنار بازنگری هایی که در بالا ذکر شد٬ کارایی را به شکل محسوسی کاهش می دهد.

حذف این Auto Draft هم مانند revision سخت نیست و می توان با خیلی از افزونه های بهینه سازی دیتابیس مانند WP-Optimize آن را شناسایی و حذف کرد.

نکته: در نظر داشته باشید حذف این Auto Draft ها هیچ تاثیری روی نوشته های پیش نویس شما که به صورت دستی ذخیره کردید ندارد و ذخیره سازی خودکار وردپرس با ذخیره پیش نویس های شما متفاوت می باشد اما بهتر هست قبل از عملیات پاکسازی حتما از دیتابیس خود یک نسخه بک آپ تهیه کنید.

 

3- پاک کردن Spam Comment ها:

یکی از معضلات جدی که سایت های وردپرسی با آن رو به رو هستند٬ کامنت های اسپمی هست در صورتی که بخش دیدگاه ها فعال باشد ارسال می شود.

یکی از علت هایی که باعث این حجم بالای کامنت های اسپم می شود ربات هایی هستند که برای تبلیغات یا قرار دادن لینک سایت های خود وارد سایت های مختلف می شوند و شروع به قرار دادن کامنت های اسپم می کنند.

اگرچه بخش زیادی از این کامنت ها توسط افزونه های ضد اسپم شناسایی می شوند و از انتشار آن جلوگیری می شود اما این دیدگاه ها همچنان در دیتابیس ذخیره می شوند و در صورت پاکسازی نشدن فضای آن را اشغال می کنند.

 

 

تمام دیدگاه ها چه تایید شده و چه اسپم در جدول wp_comnents نگهداری می شود و زمانی که تعداد این رکورد ها به چند هزار یا حتی چند ده هزار برسد٬ حجم جدول افزایش پیدا می کند و برخی از عملیات هایی که مربوط به مدیریت دیدگاه یا اجرای کوئری‌ های مرتبط می باشند با تاخیر بیشتری همراه می شود.

به همین دلیل توصیه می شود بهتر است به صورت دوره ای دیدگاه های اسپم و همچنین دیدگاه هایی که در سطل زباله قرار دارند را به صورت دائمی حذف کنید این کار علاوه بر اینکه حجم دیتابیس را کم می کند باعث سبک تر شدن جدول wp_comments هم می شود و عملکرد کلی افزایش پیدا می کند.

برای جلوگیری از انباشه شدن دیدگاه های اسپم و ناخواسته استفاده از یک افزونه ضد اسپم توصیه می شود افزونه هایی مانند Akismet Anti-Spam، Antispam Bee و CleanTalk Anti-Spam از محبوب ترین گزینه هایی هستند که می توانند بخش زیادی از دیدگاه های اسپم را پیش از انتشار شناسایی و مسدود کنند.

البته نباید صرفا به نسب افزونه اکتفا کرد و حتی با استفاده از افزونه نیز بهتر است هرچند وقت یکبار پوشه اسپم بررسی شود و دیدگاه های موجود را به طور کامل حذف کرد.

استفاده از برخی افزونه های بهینه سازی دیتابیس مانند WP-Optimize نیز امکان حذف دیدگاه های اسپم و داده های بلااستفاده را با چند کلیک در اختیار شما قرار می دهد.

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

 

4- حذف Transient های منقضی شده:

وردپرس برای اینکه تعداد درخواست های تکراری به دیتابیس را کاهش دهد و سرعت سایت را بیشتر کند از قابلیتی به نام Transient API استفاده می کند.

بسیاری از افزونه ها و حتی خود وردپرس اطلاعاتی که موقتا مورد نیاز هستند را به صورت Transient در جدول wp_options ذخیره می کنند و تا در درخواست های بعدی نیاز نباشد مجدد تولید شود و سرعت کار افزایش یابد.

هر Transient دارای یک زمان انقضا یا هما Expiration Time می باشد که پس از پایان این مدت دیگر کاربردی ندارد و حذف می شوند.

اما نکته ای که وجود دارد گاها دیده می شود که در برخی موارد این Transient های منقضی شده به صورت خودکار حذف نمی شوند و به مرور زمان تعداد زیادی از آن ها در دیتابیس بدون استفاده باقی می مانند این موضوع به ویژه در سایت هایی که از افزونه های مختلف و متعدد استفاده می کنند بیشتر دیده می شود.

تجمع این داده های بلااستفاده باعث افزایش حجم wp_options می شود که یکی از جداول بسیار مهم دیتابیس می باشد و می تواند زمان اجرای برخی Query ها را افزایش دهد. اگرچه این تاثیر در سایت های کوچک چندان محسوس نیست و مدیران سایت شما اصلا متوجه این موضوع نشوند اما در سایت های پرترافیک و فروشگاه های ووکامرسی که محصولات زیادی دارند می تواند به یک چالش جدی بدل شود برای همین باید به صورت دوره ای Transient منقضی شده را حذف کرد که باعث بهبود عملکرد دیتابیس می شود.

حذف این داده ها خوشبختانه اصلا کار سخت و پیچیده ای نیست و خیلی ساده می توان با افزونه ای نظیر Advanced Database Cleaner آن ها را شناسایی و حذف کرد.

البته کاربران حرفه ای تر می توانند با Query های مربوطه از phpMyAdmin این کار را انجام دهند که این روش برای همه توصیه نمی شود و ممکن است باعث حذف بخشی از داده های دیتابیس شوید.

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

 

5- OPTIMIZE کردن جداول:

وقتی داده را از دیتابیس پاک می کند مثل پاک کردن دیدگاه های اسپم٬ نسخه های بازبینی٬ نوشته ها و حتی برگه ها٬ این داده ها به طور کامل از روی هارد سرور پاک نمی شوند٬ بلکه فقط فضای مربوط به آن خالی اعلام می شود و تا در آینده داده های جدید جایگزین آن شود و فضا در دسترس باشد.

به این فضا های خالی ایجاده در اصطلاح دیتابیس٬ شکاف یا Fragmentation می گویند.

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

OPTIMIZE TABLE یا بهینه سازی جداول دقیقا مانند این است که بخواهید دوباره کتاب های نامرتب و بهم ریخته یک کتابخانه را مرتب کنید و در جای درست خود قرار دهید!

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

این کار امروزه خیلی ساده با استفاده از افزونه های بهینه سازی مانند WP-Optimize یا Advanced Database Cleaner قابل انجام می باشد.

اگر هم بخواهید به صورت دستی و از طریق phpMyAdmin این کار را انجام دهید می توانید وارد کنترل پنل هاست خود شوید و سپس با ورود به phpMyAdmin دیتابیس مدنظر خود را انتخاب کنید.

برای بهینه سازی جداول هم می توانید جداول مهم مانند wp_posts، wp_postmeta و wp_options را بهینه کنید و هم می توانید با کلیک روی Check all تمام جداول را بهینه کنید که این کار توصیه می شود.

با انتخاب نوار کشویی روی گزینه Optimize table تمام جداول را بهینه کنید.

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

قبلا در مقاله بهینه سازی دیتابیس وردپرس از phpMyAdmin این موارد به طور مفصل آموزش داده شده است که برای مشاهده جزییات بیشتر می توانید این مقاله را در این خصوص مطالعه کنید.

6- حذف افزونه‌ های بدون استفاده:

یکی از بزرگ ترین نقاط قوت وردپرس این است که می توان تقریبا برای هر قابلیتی که در سایت مدنظر دارید یک افزونه نصب کنید.

در واقع وجود هزاران افزونه در مخزن وردپرس هر مدیر سایتی را بی نیاز از دانش کدنویسی می کند. اما همین مزیت می تواند به یکی از معضلات هم تبدیل شود!

در بسیاری از مواقع نصب افزونه های مختلف و متعدد باعث سنگین شدن و کندی دیتابیس می شود و بسیاری از مدیران سایت ها بعد تستی که داشتند افزونه ها را بدون اینکه کامل حذف کنند فقط غیرفعال می کنند.

تصور اشتباهی وجود دارد که فکر می کنند افزونه هایی که غیرفعال می شوند چون اجرا نمی شوند تاثیری روی سرعت سایت ندارند! این حرف شاید در خصوص فایل های هاست درست باشد اما در مورد دیتابیس به طور کامل غلط می باشد!.

هنگامی که یک افزونه نصب می شود این افزونه برای ذخیره تنظیمات و اطلاعات خود٬ رکورد ها و ردیف های زیادی را در جدول wp_options ایجاد می کند و حتی در خیلی از موارد دیده شده است که جداول اختصاصی به دیتابیس اضافه می کنند. متاسفانه اکثر افزونه های وردپرس حتی پس از غیرفعال شدن و حذف شدن هم داده ها را در جداول دیتابیس نگه می دارند تا اگر دوباره افزونه را نصب کردید تنظیمات حفظ شود.

به این داده های رها شده در اصطلاح داده های یا یتیم یا Orphan Data می گویند. با گذشت زمان و تست افزونه های مختلف دیتابیس شما پر از جداولی می شوند که متعلق به افزونه های حذف شده هستند این جداول بی استفاده حجم پایگاه داده را بالا می برند و باعث می شوند وردپرس برای پیدا کردن اطلاعات واقعی سایت مجبور باشد در میان داده های مرده زیادی جستجو کند که باعث می شود سرعت Query ها کاهش یابد.

برای اینکه این موضوع حل شود می توانید اقدامات زیر را انجام دهید:

پاکسازی کامل جداول قدیمی:

اگر افزونه ای را برای همیشه حذف کردید باید جداول مربوط به آن را هم پیدا کنید و حذف کنید. افزونه هایی مانند Advanced Database Cleaner بخش جداگانه ای به نام Table دارند که به شما نشان می دهند هر جدول متعلق به کدام افزونه هست و اگر افزونه روی سایت نصب نباشد می توانید جداول آن را به راحتی حذف کنید.

این کار به راحتی می تواند به شما در پاک کردن داده های یتیم کمک کند.

 

پاک کردن تنظیمات یتیم:

با استفاده از بخش options در افزونه های بهینه سازی٬ تنظیمات باقی مانده از افزونه های قدیمی را در جدول wp_options شناسایی و پاکسازی کنید.

 

سخت گیری در نصب افزونه:

مورد مهم تر اینجاست که بلافاصله هر افزونه ای را در سایت خود نصب نکنید قبل از نصب افزونه ابتدا اطمینان حاصل کنید آیا واقعا به این افزونه نیاز دارید یا خیر.

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

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

7- کاهش Autoload Options:

یکی از بخش های مهم دیتابیس وردپرس که ارتباط مستقیمی با شاخص TTFB و سرعت لود اولیه سایت دارد بخش Autoload در جدول wp_options می باشد.

در این جدول ستونی به نام autoload وجود دارد که مقدار آن می تواند برابر با yes یا no باشد.

اما این مورد به چه معنا می باشد؟ وقتی مقدار این ستون روی yes قرار دارد به این معنا هست که وردپرس به محض باز شدن هر صفحه از سایت چه در بخش کاربری و چه در بخش مدیریت این اطلاعات را به صورت خودکار و یکجا در همان ابتدای کار بارگذاری می کند٬ هدف این قابلیت این است که تنظیمات اصلی سایت مانند آدرس سایت٬ قالب فعال و تنظیمات پایه همیشه در دسترس باشد و برای هر بخش کوچک درخواست های جداگانه به دیتابیس فرستاده نشود.

اگر مقدار این گزینه برابر با no باشد تنها در مواقعی استفاده می شود که به آن نیاز باشد! یعنی در هر دخواست این تنظیمات خوانده نمی شود به صورت یکجا و هر بار که نیاز باشد query زده می شود.

این مورد می تواند برای قسمت هایی که مداوم در هر درخواست مورد استفاده قرار می گیرند مشکل ساز شود یعنی شما اگر قسمت هایی که در هر درخواست باید بارگذاری شود مانند افزونه های کاربردی را روی no قرار دهید هر بار query های جدید به دیتابیس زده می شود و باعث بروز مشکل می شود.

 

قانون کلی:

autoload = yes برای داده هایی که در هر درخواست مورد استفاده قرار می گیرند.

autoload = no فقط برای داده هایی که هرزگاهی مورد استفاده قرار می گیرند مانند صفحه ساز ها و افزونه های بک آپ گیری!

مشکل اصلی دیتابیس های وردپرسی از جای شروع می شود که خیلی از افزونه ها به خصوص افزونه های بزرگ و غیر بهینه تمام تنظیمات سنگین خود٬ کدهای پیکربندی و حتی داده های موقتی را با وضعیت Autoload در دیتابیس ذخیره می کنند و با بزرگ شدن سایت و نصب افزونه های مختلف این داده های autoload کم کم افزایش پیدا می کند.

نتیجه کار این جاست که وردپرس در هر ثانیه برای لود کردن یک صفحه ساده مجبور می شود چندین مگابایت داده غیرضروری را از دیتابیس فراخوانی که این موضوع باعث فشار شدید به CPU می شود و سرعت لود را به شدت کم می کند.

اگر بخواهیم یک استاندارد برای مجموع داده های autoload در نظر بگیریم٬ در یک سایت وردپرسی باید حجم این داده ها مجموعا کمتر از 800 کیلوبایت یا در بدترین حالت 1 مگابایت باشد! اگر این مقدار به چند مگابایت برست افت سرعت محسوس خواهید داشت.

برای مدیریت و کاهش داده‌ های Autoload می‌ توانید اقدامات زیر را انجام دهید:

بررسی حجم داده‌ های Autoload:

اگر شما کاربر حرفه ای وردپرس می باشد با اجرای یک query ساده می توانید حجم این داده ها را به شکل دقیق پیدا کنید تا متوجه شوید وضعیت سایت بحرانی شده یا خیر.

برای این که متوجه شوید کدام گزینه بیشترین حجم را اشغال کرده وارد phpMyAdmin شوید و دستور زیر را از تب SQL اجرا کنید.

SELECT
option_name,
ROUND(LENGTH(option_value) / 1024, 2) AS size_kb
FROM wp_options
WHERE autoload = 'yes'
ORDER BY LENGTH(option_value) DESC
LIMIT 20;LIMIT 20;

خروجی به شکل تصویر زیر خواهد شد که 20 مورد از بیشترین حجم های Autoload را اشغال کردند نمایش می دهد.

 

 

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

zn_kallyas_optionsv4 مربوط به قالب هست و حجم آن با توجه به اینکه مربوط به قالب و تنظیمات آن می باشد طبیعی هست و نباید از حالت autoload خارج شود.

revslider-addons و revslider-notices این گزینه‌ ها متعلق به افزونه اسلایدر رولوشن هستند. اگر از این افزونه برای اسلایدر ها استفاده می‌کنید، وجودشان عادی است.

این موارد توضیح داده شد که اطلاع داشته باشید هر حجم بالایی در این بخش به این معنی نیست که باید حذف شود یا از حالت autoload خارج شود چون در اکثر مواقع این ها جزو مواردی هستند که قالب و افزونه ها برای عملکرد عادی سایت به آن نیاز دارند تا در هر درخواست اجرا شوند.

 

تغییر وضعیت به No:

اگر در بررسی autoload متوجه یک افزونه قدیمی شدید یا لزومی ندارد این افزونه در تمام صفحات سایت لود شود مثل تنظیمات افزونه فرم تماس که فقط در صفحه تماس با ما کاربرد دارد می توانید مقدار autoloadn را از yes به no تغییر دهید.

بعضی صفحه ساز ها هم در هر بار درخواست داده های خود را هر بار لود می کنند در صورتی که تا زمانی که وارد صفحه ساز نشوید اصلا نیاز نیست که داده ها لود شود بهتر است این موارد هم غیرفعال شود.

غیرفعال کردن غیراصولی و صرفا برای بهبود کیفیت می کند باعث شود ظاهر سایت بهم بریزد و خیلی از قابلیت های سایت دچار مشکل شود بنابراین مورد باید کاملا با دقت انجام شود.

بعضی از افزونه ها مانند Advanced Database Cleaner در نسخه های پرمیوم خود امکان مدیریت autoload را دارند تا بدون نیاز به کدنویسی این بخش را سبک تر کنید.

۸- ایندکس مناسب جدول‌ ها:

ایندکس داشتن جداول یکی دیگر از مواردی هست که بسیار در سرعت پاسخ سریع درخواست ها به دیتابیس مهم می باشد.

اگر به خاطر داشته باشید ما در بخش های ابتدایی دیتابیس را به یک کتابخانه بزرگ تشبیه کردیم٬ حالا تصور کنید وارد کتابخانه ای شدید که هزاران کتاب وجود دارد اما هیچ راهنما یا کامپیوتری وجود ندارد برای جستجو نام کتاب ها! بنابراین در این شرایط شما باید تک تک قفسه ها و تمام کتاب ها را دانه به دانه نگاه کنید تا به کتاب مورد نظر خود برسید!

در دنیای دیتابیس ها به این فرآیند کند و زمان بر Full Table Scan می گونید.

اما برای حل این مشکل دیتابیس ها یک راهکار بسیار مناسب دارند و آن هم Index گذاری روی جداول می باشد.

ایندکس ها کمک می کنند به جای جستجو کل جداول مستقیم آدرس دقیق جدول و داده های آن به سرور داده شود تا query ها در کسری ثانیه اجرا شود.

خبر خوب برای سایت های وردپرسی اینجاست که هسته وردپرس کاملا استاندارد جداول را ایندکس گذاری می کند اما مشکل زمانی شروع می شود که کاربر افزونه های متعددی به ویژه افزونه های آمارگیر٬ فرم ساز و افزونه های پیشرفته ووکامرس را روی سایت نصب می کنند و این افزونه ها جداول اختصاصی خود را در دیتابیس ایجاد می کنند.

در بسیاری از موارد به دلیل کدنویسی غیراستاندارد٬ ایندکس های لازم روی جداول تعریف نمی شود و در نتیجه وقتی حجم اطلاعات افزونه بالا می رود٬ هر جستجو یا فراخوانی ساده در آن ها باعث فشار شدید به CPU و کندی وحشتناک سایت می شود.

برای بررسی و اصلاح وضعیت ایندکس های دیتابیس می توانید از راهکار زیر استفاده کنید:

استفاده از افزونه Index WP MySQL For Speed:

این افزونه یکی از بهترین ابزارهای برای بررسی و اضافه کردن ایندکس های گمشده به جداول وردپرس است.

این افزونه دیتابیس شما را به طور کامل اسکن می کند و ایندکس هایی را که می توانند سرعت Query های سنگین به خصوص در جداولی مانند wp_postmeta و wp_comments را چند برابر کند اضافه می کند.

به کمک افزونه Advanced Database Cleaner در نسخه های پیشرفته و پرمیوم هم می توان وضعیت ساختار و ایدکس جداول را مانیتور کرد.

این افزونه برای کاربران حرفه ای و مبتدی بسیار مناسب است.

 

بروز نگه داشتن دیتابیس:

باید همیشه از نسخه های جدید و بهینه MySQL یا MariaDB استفاده کنید چون همیشه نسخه های جدید در موتورهای دیتابیس در بحث مدیریت دیتابیس و پردازش ایندکس ها بسیار هوشمند تر و سریع تر عمل می کنند و می توانند بدون آنکه تغییراتی داشته باشید یا افزونه ای نصب کنید وضعیت را بهبود ببخشند و سرعت پاسخگویی به درخواست های دیتابیس را افزایش دهند.

نکته مهم: اضافه کردن ایندکس به جداول سرعت خواندن اطلاعات یا SELECT را به شدت بالا می برد٬ اما اگر بیش از حد و غیر استاندارد انجام شود سرعت نوشتن اطلاعات INSERT یا UPDATE را کاهش می دهد بنابراین همیشه پیشنهاد می شود این کار با افزونه های استاندارد و متخصص این کار انجام شود و شخصا اقدام به ساخت ایندکس های دستی و حدسی در phpMyAdmin نکنید که می تواند مشکلات زیادی را به همراه داشته باشد.

9- استفاده از Object Cache:

تا اینجای مقاله بیشتر روی حذف داده های اضافی و سبک تر کردن دیتابیس تمرکز داشتیم اما یکی از بهترین راه ها برای افزایش سرعت دیتابیس این است که کاری کنیم وردپرس اصلا نیاز به فرستادن Query به دیتابیسن داشته باشد! البته که این حرف به این معنا نیست که قرار است هیچ درخواستی به دیتابیس نرود٬ بلکه جلوی درخواست های تکراری و مداوم گرفته شود!

اینجاست که ابزاری به نام Object Cache به کمک ما می آید.

همیشه وقتی صفحه در سایت وردپرسی باز می شود٬ وردپرس مجبور است درخواست های متعددی را به دیتابیس ارسال کند تا تنظیمات٬ اطلاعات نوشته٬ دیدگاه ها و … را دریافت کند. اگر 100 کاربر همزمان همان صفحه را باز کنند این درخواست های تکراری 100 برابر می شود و دیتابیس زیر فشار شدیدی قرار می گیرد.

 

 

این نقطه دقیقا همان نقطه ای هست که کاربران می گویند چرا بعد از تبلیغات سایت به شدت کند می شود و تمام منابع درگیر می شود در صورتی که ورودی خیلی هم بالا نیست و هاست هم منابع خوبی دارد ولی راندمان خیلی پایین هست!

کاربرد Object Cache این است که نتایج این درخواست ها به دیتابیس را در حافظه موقت خود ذخیره می کند و در دفعات بعدی که وردپرس دوباره به همان اطلاعات نیاز پیدا می کند بدون اینکه به دیتابیس درخواستی ارسال کند و زمان سرور تلف شود اطلاعات را مستقیم در کسری از ثانیه از حافظه کش برمی دارد با این کار تعداد درخواست ها به دیتابیس به شدت کم می شود و سرعت لود صفحه به شکل چشمگیری افزایش پیدا می کند.

وردپرس به صورت داخلی از یک سیستم Object Cache استفاده می کند اما این سیستم فقط یک بار با بارگذاری صفحه کار می کند و به محض اینکه صفحه به طور کامل لود شود تمام حافظه کش پاک می شود و در لود بعدی مجدد همه چیز از نوع شروع می شود!

برای اینکه این قابلیت به یک کش دائمی و قدرتمند تبدیل شود، باید آن را به یک سیستم کش مانند افزونه‌ های کش سرور متصل کرد تا اطلاعات کش‌ شده بین درخواست‌ های مختلف کاربران فعال باقی بمانند.

برای فعال‌ سازی این قابلیت، اقدامات زیر لازم است:

نصب افزونه‌ های کش:

افزونه‌ های معروفی مثل LiteSpeed Cache یا WP Rocket بخشی برای مدیریت و فعال‌ سازی قابلیت Object Cache دارند که با روشن کردن آن، هماهنگی لازم بین سایت و سرور ایجاد می‌ شود.

سیستم Object Cache برای کارایی واقعی نیاز دارد که یک ماژول کش در سمت سرور یا همان هاست شما فعال باشد. اگر هاستینگ شما این قابلیت را ارائه ندهد، روشن کردن این گزینه در افزونه‌ ها تاثیر چندانی نخواهد داشت.

نکته: برخلاف کش صفحه که تصاویر و کدهای HTML ثابت را ذخیره می‌ کند، Object Cache مستقیما پشتوانه دیتابیس است و برای سایت‌ های داینامیک، انجمن‌ ها و فروشگاه‌ های اینترنتی که مدام در حال پردازش داده‌ های متغیر هستند، یک ضرورت حیاتی به شمار می‌ رود.

 

10- فعال کردن Redis:

در بخش 9 و سیستم Object Cache گفتیم که نیاز است که اطلاعات کش شده را در یک حافظه موقت اما پایدار در سمت سرور ذخیره کنیم و یکی از قدرتمندترین٬ محبوب ترین و سریع ترین ابزارهای دنیا برای انجام این کار پایگاه داده ردیس می باشد.

ردیس که یک پایگاه داده درون حافظه ای یا همان In-Memory می باشد داده های موقت را درون RAM ذخیره می کند و همین برگ برنده آن از نظر سرعت پاسخگویی می باشد که داده ها به شکل سریعتر در اختیار کاربران قرار می گیرد و به درخواست ها پاسخ داده می شود.

تفاوت ردیس با دیتابیس MySQL یا MariaDB این است که این دیتابیس ها اطلاعات را روی دیسک ذخیره می کنند و از آنجا سرعت خواندن و نوشتن روی RAM خیلی خیلی سریع تر از هارد دیسک می باشد٬ ردیس می تواند درخواست ها را با سرعتی غیرقابل مقایسه با دیتابیس اصلی پاسخ دهد!

وقتی ردیس را به عنوان یکی دیتابیس کمکی برای وردپرس فعال می کنید یک لایه محافظتی فوق العاده سرویس جلوی دیتابیس اصلی شما قرار می گیرد و هر زمان که وردپرس به اطلاعاتی نیاز داشته باشد ابتدا سراغ ردیس در RAM می رود و اگر اطلاعات موجود بود پاسخ داده می شود و دیتابیس اصلی درگیر نمی شود این موضو به طور شگفت انگیری مصرف CPU را کاهش می دهد و کندی های ناشی از Query های سنگین را به طور کامل برطرف می کند.

استفاده از ردیس به طور ویژه برای سایت های فروشگاهی که بر بستر ووکامرس راه اندازی شدند یا سایت های آموزشی با تعداد کاربران آنلاین بالا یک مزیت بسیار خوب می باشد. یعنی جاهایی که به دلیل پویا بودن صفحات نمی توان از کش های معمولی استفاده کرد ردیس می تواند یک نجات دهنده باشد.

برای راه‌ اندازی و استفاده از ردیس در وردپرس، باید دو مرحله زیر طی شود:

نکته: ردیس باید روی سرور های میزبانی شما نصب شده باشد و در صورتی که نصب نباشد این اقدامات بی فایده خواهد بود.

فعال‌ سازی ماژول Redis در هاست:

ابتدا بعد از اطمینان از نصب بودن ردیس روی سرور وارد سی پنل و قسمت Select PHP Version می شویم و از قسمت Extensions گزینه Redis را فعال می کنید.

 

اتصال وردپرس به ردیس:

پس از فعال کردن ردیس در هاست باید وردپرس را به آن متصل کنید. برای انجام این کار می توانید از افزونه هایی مانند Redis Object Cache یا LiteSpeed Cache استفاده کنید.

با نصب افزونه LiteSpeed Cache از بخش object می توانید ردیس را روی وردپرس خود کانفیگ کنید.

قبلا در آموزش راهنمای فعال کردن کش ردیس برای وردپرس این موارد را به طور کامل توضیح دادیم.

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

11- استفاده از LiteSpeed Cache:

اگر از هاست یا سروری استفاده می کنید که وب سرور لایت اسپید روی آن نصب می باشد٬ این بخش یکی از طلایی ترین کلید های بهینه سازی دیتابیس و سرعت سایت شما خواهد بود.

افزونه لایت اسپید کش صرفا یک افزونه کش معمولی برای فشرده سازی فایل ها نیست بلکه یک ابزار جامع و همه کار هست که ارتباط مستقیمی با وب سرور برقرار می کند و امکانات فوق العاده ای برای مدیریت و بهینه سازی پایگاه داده در اختیار شما قرار می دهد.

خیلی از کاربران برای بهینه سازی دیتابیس به سراغ افزونه های مجزا می روند که بعضی از افزونه ها که در همین مقاله معرفی شدند عملکرد و امکانات خوبی هم دارند اما لایت اسپید کش بخشی به نام Database Optimizadtion یا همان بهینه‌ سازی پایگاه داده دارد که همه ی این کار ها را با یک کلید انجام می دهد.

مزیت این بخش هماهنگی کامل با ویژگی های پیشرفته سرور است که باعث می شود عملیات بهینه سازی با کمترین ریسک و بالاترین بازدهی انجام شود.

برای دسترسی به این بخش فقط کافی هست از نوار سمت راست پیشخوان وردپرس خود روی لایت اسپید کش نشانگر Mouse را قرار دهید و سپس روی پایگاه داده کلیک کنید.

این افزونه در بخش مدیریت دیتابیس خود قابلیت‌ های حیاتی زیر را به شما ارائه می‌ دهد:

پاکسازی همه‌ با یک کلیک:

این قابلیت می تواند به طور همزمان تمام نسخه های بازبینی نوشته ها٬ پیش نویس های خودکار٬ دیدگاه های اسپم٬ سشن های منقضی شده و پست های زباله دان را انجام دهد تا دیتابیس از شر آن ها خلاص شود.

 

بهینه‌ سازی جداول:

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

مدیریت عالی Object Cache:

در بخش‌های 9 و 10 درباره اهمیت Object Cache و Redis صحبت کردیم. افزونه لایت‌اسپید کش یکی از بهترین و پایدارترین اتصالات را به سیستم‌ های Redis و Memcached فراهم می‌ کند. کافی است در تنظیمات کش افزونه، گزینه Object Cache را روشن کنید تا بار سنگین درخواست‌ های تکراری از روی دیتابیس اصلی برداشته شود.

زمان‌بندی بهینه‌ سازی دیتابیس:

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

12- تغییر موتور جداول دیتابیس از MyISAM به InnoDB:

اگر سایت وردپرسی شما قدیمی هست یا سال هاست که دیتابیس خود را بدون تغییر از هاستی به هاست دیگر منتقل کردید احتمالا یکی از مخفی ترین علت های کندی دیتابیس را فراموش کردید که چک کنید!

استفاده از موتور ذخیره سازی قدیمی MyISAM.

هر جدول دیتابیس با یک Engine خاص داده ها را مدیریت می کند. در گذشته موتور پیش فرض دیتابیس ها MyISAM بود اما امروزه استاندارد های جهانی به سمت موتور های بسیار پیشرفته تر و سریع تر InnoDB کوچ کردند. تفاوت این دو دیتابیس در مواجهه با سایت های پرترافیک دقیقا همان چیزی است که می تواند سرعت سایت را متحول کند.

بزگترین نقطه ضعف موتور قدیمی MyISAM این بود که قابلیتی به نام Table-level Locking داشت. تصور کنید یک کاربر در حال ثبت دیدگاه یا خرید محصول بود٬ در این لحظه دیتابیس مجبور است اطلاعات را در جدول بنویسد. موتور دیتابیس برای انجام این کار کل آن جدول را به طور کامل قفل می کند. یعنی تا زمانی که نوشتن در سطح دیتابیس به اتمام نرسد هیچ کاربر دیگری حتی نمی تواند اطلاعات آن جدول را بخواند!

تا زمانی که داده های زیادی در سطح دیتابیس وجود نداشت یا ترافیک بالا نبود شاید خیلی این نقطه ضعف دیده نمی شود ولی اگر سایت ترافیک بالایی داشت کاربران در صف های طولانی آزاد سازی جداول منتظر می ماندند و این بعضی افزایش شدید TTFB و کندی وحشتناک صفحات.

در نقطه مقابل، موتور مدرن InnoDB از قابلیت Row-level Locking یا قفل کردن در سطح ردیف استفاده می‌ کند. یعنی وقتی اطلاعاتی در حال ثبت است، فقط و فقط همان یک ردیف خاص قفل می‌ شود و بقیه جدول برای استفاده سایر کاربران کاملا آزاد است. علاوه بر این، InnoDB در مدیریت حافظه RAM سرور بسیار هوشمندانه‌ تر عمل می‌ کند و در برابر کرش کردن یا خرابی دیتابیس، امنیت بسیار بالاتری دارد.

برای اینکه ابتدا بررسی کنید دیتابیس شما از کدام موتور در table ها استفاده می کند فقط کافی هست وارد phpMyAdmin شوید.

دیتابیس خود را انتخاب کنید رو به روی نام هر Table از قسمت Type کاملا مشخص می شود از چه Engine استفاده می شود مانند تصویر زیر:

برای تغییر engine هر table می توانید به شکل زیر اقدام کنید:

الف- تغییر موتور با کوئری SQL:

برای تغییر موتور هر جدول به عنوان مثال جدول wp_options ، می‌توانید دستور زیر را در بخش SQL اجرا کنید:

ALTER TABLE wp_options ENGINE=InnoDB;

اگر جدول های شما از پیشوند های پیش فرض استفاده نمی کند باید حتما دقیقا نام همان Table را به شکلی که پیشوند دارد برای مثال wqaz_options وارد کنید تا تغییر موتور پیش فرض انجام شود.

ب- استفاده از ابزار خود phpMyAdmin:

اگر کاربر حرفه ای نیستید و نمی خواهید از دستور SQL برای تغییر موتور پیش فرض table ها استفاده کنید به شما پیشنهاد می کنیم از این روش استفاده کنید.

فقط کافی هست table مدنظر را انتخاب کنید و از نوار بالا روی Operations کلیک کنید مانند تصویر زیر:

 

 

سپس در کادر مربوط به Table Options از قسمت Storage engine موتور پیش فرض را از MyISAM روی InnoDB قرار دهید و بر روی Go کلیک کنید تا table مدنظر تغییر کند.

این روش به نسبت اجرای دستور SQL برای کاربران مبتدی امن تر می باشد.

 

پ- تغییر به کمک افزونه:

برای تغییر موتور دیتابیس جداول از افزونه های کمکی هم می توانید استفاده کنید تا نیاز نباشد برای تک تک کد بزنید یا دستی از phpMyAdmin تغییرات داشته باشید.

به کمک افزونه هایی مانند WP-Optimize یا Advanced Database Cleaner می توان این مورد را انجام داد اما ساده ترین افزونه برای انجام این کار خود افزونه لایت اسپید می باشد که اگر در نوار سمت راست روی افزونه لایت اسپید کش نشانگر Mouse را قرار دهید و بر روی پایگاه داده کلیک کنید در قسمت مربوط به مبدل موتور جدول پایگاه داده می توانید لیستی از جداولی که از موتور MyISAM استفاده می کنند را مشاهده کنید و با کلیک بر روی تبدیل به InnoDB به سادگی آن ها را تغییر دهید مانند تصویر زیر:

 

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

نکته: تقریبا در وردپرس های جدید به صورت پیش فرض خود وردپرس جداول خود را روی InnoDB تنظیم می کند.

13- بروزرسانی نسخه PHP و MySQL/MariaDB:

تا اینجای کار هر موردی که گفته شد مربوط به بهینه خود داده ها و جداول بوده است اما موارد حیاتی دیگری هم وجود دارد که به عنوان زیرساخت و موتور محرک دیتابیس عمل می کند و آن هم چیزی نیست جز نسخه های نرم افزاری سرور.

اگر شما تمام اصول پاکسازی و بهینه سازی دیتابیس را به طور کامل انجام دهید ولی همچنان سایت شما روی یک نسخه قدیمی و منسوخ شده از PHP یا دیتابیس اجرا شود٬ آن طور که باید و شاید به نتیجه ای که مدنظر دارید نخواهید رسید و سرعت سایت هرگز به شکل ایده آل افزایش نمی یابد.

هم وردپرس و هم دیتابیس ها به طور مرتب توسط توسعه دهندگان بزرگ دنیا آپدیت می شوند و این آپدیت ها فقط برای امنیت نیستند بلکه هدف اصلی همیشه بهبود نحوه پردازش ها و مصرف منابع هم می باشد.

برای مثال نسخه های جدید PHP مجهز به موتور های پردازشی هوشمند هستند که پردازش کدهای وردپرس را با سرعت بیشتر و مصرف منابع کمتر انجام می دهد و در سمت دیگر نسخه های دیتابیس بروزتر مانند MySQL 8 و MariaDB 10.6 به بالا در زمینه اجرای Query های دیتابیس٬ مدیریت ایندکس ها و پاسخگویی به درخواست های همزمان به شکل کامل سریع تر و پایدار تر عمل می کنند.

یک نکته مهم اینجاست که دیتابیس های جدید ساختار درخواست ها را از قبل آنالیز می کنند و کم مصرف ترین و کم هزینه ترین راه را برای پاسخ به آن پیدا می کنند تا فشار کمتری به CPU وارد شود.

برای بررسی و ارتقای این نسخه‌ ها، اقدامات زیر را دنبال کنید:

بررسی وضعیت سلامت سایت در وردپرس:

از طریق پیشخوان وردپرس می توانید به مسیر ابزارها و سلامت سایت بروید. در این بخش وردپرس به صورت خودکار هشدار های لازم امنیتی را به شما می دهد.

اگر نسخه php یا دیتابیس شما قدیمی باشد در این بخش با اخطار رو به رو می شوید و می توانید برای ارتقا اقدام کنید.

 

ارتقای نسخه PHP از طریق هاست:

برای ارتقا نسخه php سایت خود می توانید وارد کنترل پنل هاست شوید برای مثال سی پنل را باز کنید و به بخش Multi PHP Manager بروید و اگر نیاز به تنظیم اکستشن ها هم دارید در این بخش دامنه را روی گزینه inherit تنظیم کنید تا از قسمت Select PHP Version خوانده شود.

در بخش Select PHP Version نسخه php سایت خود را روی نسخه های بروزتر تنظیم کنید و وضعیت سایت را بررسی کنید تا دچار خطا نشده باشید.

 

درخواست بروزرسانی دیتابیس از پشتیبانی:

برخلاف نسخه PHP که کاربران دسترسی برای تغییر آن دارند٬ اگر نسخه دیتابیس قدیمی باشد این امکان وجود ندارد که خود کاربر بتواند آن را تغییر دهد و حتما باید به پشتیبانی هاستینگ خود تیکت ارسال کند تا این موضوع را بررسی کنند و به نسخه بروز ارتقا دهند.

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

 

14- بهینه‌ سازی و پاکسازی جدول Log Tables:

یکی از بخش هایی که وظیفه امنیت و عیب یابی سایت را برعهده دارد٬ اگر به حال خود رها شود می تواند به یکی از سنگین ترین و مخرب ترین بخش های دیتابیس تبدیل شود.

جداول گزارشات یا لاگ ها!

بسیاری از افزونه های وردپرسی که به صورت مداوم فعالیت سایت را زیر نظر میگیرند برای ثبت گزارش های خود جداول اختصاصی در دیتابیس ایجاد می کنند. از جمله این افزونه ها می تواند به افزونه های امنیتی مانند Wordfence یا iThemes Security اشاره کرد.

در کنار این افزونه های امنیتی٬ افزونه های آمارگیر هم مانند WP Statistics برای ثبت تک تک کلیک ها و بازدید کاربران می تواند جداول و داده های زیادی تولید کند.

این افزونه ها روزانه هزاران ردیف اطلاعات شامل آدرس IP ٬ زمان دقیق درخواست٬ نوع مرورگر و … را در درون دیتابیس می نویسند.

داده های مربوط به لاگ ها و خطا ها تاریخ انقضای بسیار کوتاهی دارند به این معنی که داده های یک ماه قبل امروز ارزشی ندارد و اگر مکانسیم پاکسازی این داده ها فعال نباشد و به درستی داده های قدیمی حذف نشود در سایت های پرترافیک به سرعت مرز میلیون ها ردیف را رد می کند و خیلی ساده چند گیگابایت داده را در دیتابیس اشغال می کند و این انباشتگی باعث می شود دیتابیس کند شود و کل سایت دچار افت سرعت شدید شود.

برای مهار و بهینه‌ سازی جداول لاگ، اقدامات زیر را انجام دهید:

محدود کردن زمان نگهداری لاگ‌ ها در تنظیمات افزونه:

اولین راهکار و بهترین راهکار این است که اصلا اجازه ندهید داده های زیاد از افزونه های آمارگیر و امنیتی وارد دیتابیس شود و بعد از گذشت مدت زمان مشخص مثلا بیست روز یا یک ماه این داده های قدیمی به صورت اتوماتیک حذف شود.

در افزونه های امنیتی و آمارگیر از قسمت تنظیمات نگه داری لاگ را روی مدت زمان مدنظر خود تعیین کنید و حتما بررسی داشته باشید که لاگ ها به درستی حذف می شوند.

پاکسازی و خالی کردن جداول با دستور Empty یا Truncate:

اگر با افزونه های بهینه سازی مانند Advanced Database Cleaner دیتابیس را بررسی کردید و دیدید این جداول مربوط به لاگ های افزونه ها که معمولا نام هایی مثل _wfLogs یا _statistics دارند حجم وحشتناکی اشغال کردند می توانید آن ها را انتخاب کنید و عملیات Empty یا Truncate را اجرا کنید.

این کار بدون آسیب زدن به دیتابیس اصلی و یا تنظیمات افزونه ها٬ فقط گزارشات را کاملا صفر می کند.

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

غیرفعال کردن قابلیت‌ های ردیابی غیرضروری:

اگر از افزونه های آمارگیر سنگین استفاده می کنید٬ قابلیت هایی مثل ردیابی کاربران آنلاین در لحظه یا ثبت دقیق ربات های جستجوگر را غیرفعال کنید تا حجم داده های ورودی به دیتابیس کاهش یابد.

ردیابی کاربران آنلاین جزو مواردی هست که در لحظه برای سایت های پرترافیک لاگ های زیادی را وارد دیتابیس می کند و عموما هم اهمیت چندانی ندارد.

15- انتخاب هاست مناسب:

به آخرین قدم در این مقاله رسیدیم٬ تمام چیز هایی که در این مقاله راجع به آن صحبت شد زمانی اثر واقعی خود را نمایش می دهند که روی یک سخت افزار قدرتمند و زیرساخت اصولی میزبانی شوند.

به بیان ساده تر اگر می خواهید روش هایی که برای بهینه سازی و سرعت سایت انجام دادید به نتیجه برسد باید هاستی که انتخاب می کنید یک هاست باکیفیت و قدرتمند باشد.

 

 

یکی از کلیدی ترین فاکتور ها برای انتخاب یک هاست خوب برای سایت وردپرسی این است که نوع هارد دیسک مورد استفاده در سرور از نوع هارد های پرسرعت SSD یا NVMe باشند تا سرعت Write و Read در این هارد دیسک ها بالا باشد تا خواندن و نوشتن در دیتابیس با سرعت بیشتری انجام شود.

هاست هایی که از نوع هارد های قدیمی HDD استفاده می کنند بزرگترین دشمن سرعت دیتابیس هستند.

اما ویژگی‌های یک هاست مناسب برای دیتابیس فقط به نوع هارد ختم نمی‌ شود. شما در زمان خرید یا ارتقای هاست، باید چک‌ لیست زیر را به عنوان معیار های اصلی در نظر بگیرید:

منابع سخت‌ افزاری اختصاصی و بالا:

دیتابیس برای پردازش همزمان Query های کاربران به شدت به منابع CPU و RAM بالا نیاز دارد.

هاست های اشتراکی که منابع خیلی محدود دارند عموما نمی توانند برای سایت های پرترافیک عملکرد خوبی را نمایش دهند و سایت مداوم با کندی های شدید رو به رو می شوند.

اگر شرکت هاستینگ تعداد بالایی از سایت ها را روی یک سرور قرار دهد ممکن است در ساعات پیک مصرف خطاهایی نظیر Error Establishing a Database Connection رو به رو شوید که نشان می دهد دیتابیس سرور دچار مشکل شده است.

 

پشتیبانی از آخرین نسخه‌ های PHP و دیتابیس‌ های بروز:

عموما شرکت های هاستینگ مطرح سرور های خود را همیشه آپدیت نگه می دارند ولی همانطور که در بخش های قبلی گفتیم یک هاست خوب باید به شما امکان استفاده از نسخه های بروز PHP و دیتابیس های بروز را بدهد.

با بروزرسانی هایی که برای PHP و دیتابیس انجام می شود شرکت هاستینگ باید این نسخه های جدید را در سرور خود آپدیت کند تا کدهای سایت و Query های سایت در بهترین حالت ممکن پردازش شوند.

پشتیبانی و نصب بودن Redis روی سرور:

یک هاست وردپرس یا هاست ووکامرس خوب باید علاوه بر منابع بالا باید از ردیس هم پشتیبانی کند.

استفاده از ردیس برای افزایش سرعت پاسخگویی دیتابیس و افزایش راندمان سایت به شدت پر اهمیت می باشد و حتما قبل از خرید هاست اطمینان حاصل کنید که هاستی که تهیه می کنید حتما از ردیس پشتیبانی کند تا بتوانید بدون دغدغه روی افزونه کش لایت اسپید آن را کانفیگ کنید و بار ترافیکی را از روی دوش دیتابیس اصلی بردارید.

 

سوالات متداول کاربران:

در این بخش به چند سوال رایج که کاربران با آن رو به رو می شوند پاسخ خواهیم داد.

 

سوال 1: هر چند وقت یکبار باید دیتابیس وردپرس را بهینه کنیم؟

اگر سایت شما یک سایت وردپرسی کوچک هست می توانید ماهی یک مرتبه دیتابیس ها را بهینه سازی کنید و کاملا کافی می باشد.

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

 

سوال 2: آیا بهینه‌ سازی دیتابیس باعث افزایش سرعت سایت می‌ شود؟

بله٬ اما اگر واقعا کندی سایت شما مربوط به دیتابیس باشد سرعت قرار است افزایش پیدا کند.

حذف داده های اضافی٬ بهینه سازی جداول٬ کاهش حجم اطلاعات غیرضروری و استفاده از ردیس می تواند زمان اجرای Query ها را افزایش دهید و سرعت بارگذاری صفحات بهتر شود البته عواملی مانند کیفیت هاست، نسخه PHP، سیستم کش و قالب نیز نقش مهمی در سرعت سایت دارند.

 

سوال 3: آیا قبل از بهینه‌ سازی دیتابیس باید از سایت بکاپ تهیه کنیم؟

این مورد در متن آموزش هم چندین بار گفته شد حتی اگر قصد ساده ترین کارها مانند حذف Revision ها یا اجرای Optimize را هم دارید حتما بهتر است یک بک آپ از دیتابیس تهیه کنید تا اگر مشکلی رخ داد بتوانید به نسخه سالم بازگردانی کنید.

 

سوال 4: بهترین افزونه برای بهینه‌ سازی دیتابیس وردپرس چیست؟

افزونه‌ هایی مانند WP-Optimize، Advanced Database Cleaner و LiteSpeed Cache از بهترین گزینه‌ ها برای پاکسازی و بهینه‌ سازی دیتابیس هستند.

اگر از وب‌ سرور LiteSpeed استفاده می‌ کنید، افزونه LiteSpeed Cache امکانات کاملی برای مدیریت دیتابیس، Object Cache و Redis در اختیار شما قرار می‌ دهد.

سوال 5: آیا حذف Revision ها و Auto Draft ها مشکلی برای سایت ایجاد می‌ کند؟

خیر. حذف Revision های قدیمی و Auto Draft های بلااستفاده هیچ آسیبی به عملکرد وردپرس وارد نمی‌ کند.

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

سوال 6: Redis چه تفاوتی با کش معمولی دارد؟

کش صفحه نسخه‌ ای آماده از صفحات سایت را ذخیره می‌ کند، اما Redis نتایج Query های دیتابیس و داده‌ های پرتکرار را در حافظه RAM نگه می‌ دارد.

به همین دلیل Redis برای سایت‌ های فروشگاهی، انجمن‌ ها و وب‌سایت‌ های پرترافیک که صفحات آن‌ ها به‌صورت پویا تولید می‌ شوند، تاثیر بسیار بیشتری بر کاهش فشار دیتابیس دارد.

سوال 7: از کجا بفهمیم کندی سایت به دیتابیس مربوط است؟

اگر هم‌ زمان با افزایش حجم سایت، مواردی مانند افزایش TTFB، کند شدن پیشخوان وردپرس، تاخیر در جستجوی محصولات یا نوشته‌ ها، افزایش مصرف CPU هاست و کند شدن ووکامرس را مشاهده می‌ کنید، احتمال زیادی وجود دارد که عملکرد دیتابیس نیاز به بررسی و بهینه‌ سازی داشته باشد.

البته برای اطمینان بهتر است قالب، افزونه‌ ها نیز بررسی شوند.

سوال 8: آیا بهینه‌ سازی دیتابیس برای همه سایت‌ های وردپرسی ضروری است؟

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

نتیجه‌ گیری:

بهینه سازی دیتابیس وردپرس را نباید صرفا یک راهکار برای افزایش سرعت دانست بلکه این کار نوعی سرمایه گذاری روی پایداری و سلامت سایت در بلند مدت است.

خیلی از مشکلاتی که مدیران وب سایت ها پس از چند سال فعالیت با آن رو به رو می شوند مانند افزایش مصرف منابع٬ کند شدن پیشخوان٬ افت عملکرد فروشگاه و حتی نیاز به ارتقای مداوم هاست٬ در بسیاری از موارد به این خاطر می باشد که به نگهداری صحیح دیتابیس بی توجهی شده است.

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

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

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

4.5/5 - (2 امتیاز)