بهینه سازی و افزایش سرعت دیتابیس ووکامرس با HPOS
بهینه سازی و افزایش سرعت دیتابیس ووکامرس با HPOS
یکی از مشکلات عمدهی این سالهای ووکامرس، عدم بهینه بودن دیتابیس بود؛ اطلاعات این افزونه در پایگاه داده فاقد جدول اختصاصی بوده و کلیه اطلاعات در همان جداول و متاهای پیشفرض خود وردپرس ذخیره میشد. تا اینکه در جدیدترین آپدیت ووکامرس این طلسم شکسته شده و حالا میتوانید با بهینه سازی دیتابیس ووکامرس با HPOS سرعت سایت وردپرسی خود را بهطرز چشمگیری افزایش دهید.
در ادامه این نوشته از آموزش ایساتیس قصد معرفی ویژگی High-Performance Order Storage (HPOS) ووکامرس را دارم که ابتدا میتوانید با روند کار آن آشنا شده و سپس مزایای آن را بررسی و در نهایت مراحل فعال سازی آن را با هم مرور خواهیم کرد.
بهینه سازی و افزایش سرعت دیتابیس
ویژگی HPOS ووکامرس قبلا بهعنوان «Customer Order Tables» شناخته میشد که از طریق افزونههای مختلف میتوانستید ساختار دیتابیس را قابل فهم و بهتر کنید.
در ژانویه 2022، ووکامرس یک طرح اولیه را برای بهینه سازی دیتابیس ووکامرس از طریق بهینهسازی جداول سفارشی منتشر کرد و از آن زمان و با آپدیتهای بعدی سعی شد تا بهمرور این ویژگی به هسته خود ووکامرس اضافه شود که در نهایت در ماه مه 2022، این ویژگی در قالب نسخه بتا ارائه شد.
از نسخه WooCommerce 8.2 که در اکتبر 2023 منتشر شد، قابلیت HPOS بهطور عمومی و تحت یک نسخه پایدار ارائه شده است که میتوانید آن را بر روی سایت خود فعال کنید. تا پیش از این فرآیندی که در ووکامرس برای پردازش اطلاعات صورت میگرفت به شکل زیر بود:
تا قبل از نسخه ۸.۲ و در تمام طول این سالها، کلیه ساختارهای جدول ووکامرس متکی به جداول _post
و _postmeta
بود. لذا کلیه دادههای زیر که مربوط به ووکامرس بودند در این دو جدول اصلی وردپرس ذخیره میشدند
_wc_orders
_wc_order_addresses
_wc_order_operational_data
_wc_orders_meta
چرا باید از High-Performance Order Storage استفاده کنیم؟
استفاده از ساختار بهینه سازی دیتابیس ووکامرس با HPOS یه مزیت زیر را برای فروشگاه شما فراهم خواهد کرد:
1- افزایش سرعت و مقیاس پذیری
هرچه فروشگاه شما بزرگتر میشود و بهدنبال آن مطالبی که در قالب بلاگ پست منتشر میکنید هر دو روی یک وردپرس نصب شده باشند، با افزایش تعداد مشتریان، سفارشها و مطالب بهمرور پایگاه داده شما سنگینتر و باری که سرور و هاست وردپرس شما باید برای پردازش اطلاعات تحمل کند بیشتر خواهد شد.
نتیجه این روند کاهش به شدت زیاد سرعت روند رسیدگی به درخواستهای سفارش مشتری و ارائه یک تجربه کاربری مناسب است. کاربری که در حال خرید است به کندی مراحل را طی میکند و کاربر قبلی هم برای رهگیری سفارشات یا مشاهده تاریخچههای خرید خود با کندی مواجه است.
اما با فعال کردن HPOS در ووکامرس، کلیه اطلاعات مربوط به سفارشات، آدرس سفارشات و سایر اطلاعاتی که مرتبط با سفارش مشتری هستند، در جدول اختصاصی خود قرار میگیرند. بدین ترتیب برای پردازش چنین درخواستهایی دیگر لزومی ندارد که پردازشها از طریق جداول پیشفرض وردپرس که حجم اطلاعات بسیار بیشتری دارند صورت گیرد.
بنابراین این ویژگی منجر به افزایش سرعت عملیات خواندن/نوشتن شده و مهمتر از آن جدولهای مربوط به وردپرس و سایر افزونهها، از جداول خود ووکامرس جدا خواهند شد. این ویژگی سطح مقیاسپذیری را هم بالا برده و باعث میشود تا ووکامرس در فروشگاههای بسیار بزرگتر نیز به خوبی عمل کند.
2- افزایش اطمینان و پشتیبانگیری از اطلاعات
مزیت دیگر HPOS فراهم کردن امکان پشتیبان گیری از اطلاعات ووکامرس به شکلی سادهتر است. دیگر لازم نیست نگران از دست دادن اطلاعات مربوط به سفارشات مشتری، موجودی محصولات یا اطلاعات مشتری باشید.
با پشتیبان گیری قابل اعتمادتر که در جداول اختصاصی ووکامرس در پایگاه داده وجود دارد، فرآیند پشتیبانی سادهتر شده و هر زمان هم که نیاز به خروجی گرفتن یا درونریزی اطلاعات داشته باشید، لزومی ندارد که هم تعداد اطلاعات بیشتر (به دلیل قرارگیری دادهها در جداول پیشفرض وردپرس) و هم حجم بیشتری را که هر دو موجب سختتر شدن و طولانیتر شدن فرآیند میشود را متحمل شوید.
3- سادگی بهتر
مزیت دیگر HPOS ووکامرس نیز این است که لزومی ندارد برای یافتن اطلاعات مربوط به ووکامرس، از یک حجم بسیار بالا از اطلاعات عبور کنید.
بهسادگی میتوانید برای یافتن یا درک ساختار کلی دادهها در ووکامرس در جدولی اختصاصی و کاملا مستقل از جدول _posts
عمل کنید. در توسعه افزونههای مبتنی بر ووکامرس نیز کارتان سادهتر خواهد شد که انعطافپذیری و توسعه بهتری را فراهم میکند.
آموزش فعال سازی High-Performance Order Storage ووکامرس
برای فعال کردن HPOS ووکامرس قبل از هر چیزی آن را به جدیدترین نسخه ۸.۲ یا نسخه بالاتر از این آپدیت کنید. نسخههای قبل از ۸.۲ امکان فعالسازی این ویژگی را ندارند. سپس به ترتیب زیر عمل کنید.
- در پیشخوان وردپرس وارد مسیر ووکامرس> پیکربندی> پیشرفته> امکانات شوید.
- تیک گزینه Enable compatibility mode (synchronizes orders to the posts table) را فعال کنید.
- روی دکمه ذخیره تغییرات کلیک کنید.
با انجام این کار، در پس زمینه اقداماتی در پس زمینه به شکل زیر اجرا خواهند شد.
- ویژگی
wc_schedule_pending_batch_process
بررسی خواهد کرد که آیا سفارشاتی وجود دارد که بهینهسازی برای آنها انجام گیرد یا خیر. - در صورت وجود، عمل
wc_run_batch_process
بهمنظور ارسال سفارشات به فضای ذخیره سازی صورت میگیرد تا عملیات انتقال اطلاعات ووکامرس از جداول قدیمی به جداول اختصاصی صورت گیرد. - از آنجا که این عمل بر اساس کرونجاب کار میکند و بسته به تعداد محصولات و خجمی که دیتابیس شما دارد ممکن است روند طولانی را طی کند به منظور مدیریت یا اجرای لحظهای (خارج از زمان تعیین شده توسط کرون جاب) میتوانید به منوی ووکامرس> وضعیت مراجعه کرده و سپس وارد تب Scheduled Actions شوید.
- اگر عمل
wc_run_batch_process
در گروه Pending قرار داشت یکبار روی دکمه RUN کلیک کرده و بسته به تعداد محصولات و حجمی که پایگاه داده شما دارد منتظر شوید تا این عمل بهطور کامل انجام شود.
پس از تکمیل فرآیند باید این عمل در گروه Complete مانند تصویر بالا ذخیره شده و در ستون STATUS نیز در همین وضعیت کامل شده قرار گرفته باشد.
پس از کامل شدن این فرآیند، حالا دوباره به مسیر ووکامرس> پیکربندی> پیشرفته> امکانات برگردید. مشابه تصویر زیر خواهید دید که بخش Order data storage حالا به صورت زیر تغییر کرده است.
در این مرحله کافی است دکمه رادیویی High-performance order storage (recommended) را انتخاب کرده و روی دکمه ذخیره تغییرات کلیک کنید.
توجه: در صورتی که تیک گزینه Enable compatibility mode (synchronizes orders to the posts table) همزمان با حالت High-performance order storage (recommended) فعال باشد، دادههای سفارشی بین جداول posts/postmeta
و جداول اختصاصی ووکامرس
سینک خواهد شد (ایجاد یک نسخه کپی در دو جدول) که چنین حالتی موجب افزایش حجم دیتابیس شما خواهد شد. بنابراین پس از اینکه از کارکرد صحیح و کامل افزونه مطمئن شدید، تیک این گزینه را غیرفعال کنید.
کار به اتمام رسیده و حالا ضمن اینکه کلیه اطلاعات مربوط به ووکامرس از جداول پیشفرض وردپرس به جداول اختصاصی ووکامرس منتقل شده، از این پس نیز تمامی سفارشات در جدول اختصاصی خود ووکامرس ذخیره خواهند شد.
کلام آخر
در این مقاله از مجموعه آموزش های وردپرس و افزونه وردپرس، ما درباره ” بهینه سازی و افزایش سرعت دیتابیس ووکامرس با HPOS ” ؛ صحبت کردیم.
ووکامرس به خودی خود تا پیش از انتشار نسخه ۸.۲ یک افزونه سنگین وردپرس بود که در سایتهایی با تعداد محصولات بیشتر از هزارتایی، کندی سایت در حالتی که از هاست با منابع نسبتا معمولی استفاده کنید محسوس بود. بنابراین با ارائه این نسخه چنین مشکلی به لطف جدا کردن این دادهها و پردازش آنها در جدولی جداگانه بهبود یافته است.
خصوصا در شرایطی که یک سایت فروشگاهی، ساختار وبلاگ خود را در یک وردپرس جدا در قالب نصب وردپرس در ساب دامنه یا نصب وردپرس در ساب فولدر بهطور جداگانه ایجاد نکرده است.
در صورتی که به هر دلیلی هنگام فعالسازی این ویژگی با خطایی مشابه تصویر بالا مواجه شدید، به این معنی است که شما از افزونهای استفاده میکنید که با این ساختار هماهنگ نیست. برای بررسی آن کافی است در همان مسیر روی View and Manage کلیک کرده و بررسی کنید که دلیل آن چیست و متناسب با آن، تصمیم مناسب را برای جایگزینی افزونه یا رفع مشکل اتخاذ کنید.