Tag Archive for: database

Overload WordPress Disebabkan Query Autoload

WordPress cukup umum mengalami overload pada CPU yang disebabkan proses query autoload yang tidak efisien pada tabel _options yang umumnya disalahgunakan oleh plugin yang justru digunakan sebagai tabel untuk menyimpan data namun tabel ini tidak memiliki kolom index sehingga mengakibatkan proses query berjalan sangat lambat jika datanya cukup besar.

Sebagai contoh proses query sql yang berjalan adalah:

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';




Untuk melihat beban query ini and adapat menjalankan pada mysqladmin/mysql:

explain SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';



Disini akan terlihat bahwa query tersebut akan memproses berdasarkan hasil dari 226rb record yang mana query ini sangat berat dan tidak efisien untuk dijalankan dengan sering.

Secara default tabel _options pada wordpress tidak memiliki kolom index karena memang tidak digunakan untuk menyimpan data, namun beberapa plugin menyalahgunakan tabel ini dan menggunakannya untuk menyimpan record operasional sehingga mengakibatkan beban berlebih. Solusinya adalah dengan menambahkan kolom index pada tabel wp_options ini yaitu:

ALTER TABLE wp_options ADD INDEX (`autoload`);

Catatan: Lakukan BACKUP sebelum mengeksekusi syntax ini dan sesuaikan bagian “wp_options” dengan nama tabel pada wordpress anda karena dapat berbeda prefix (awalan).

Setelah itu anda dapat menjalankan kembali syntax EXPLAIN untuk melihat hasilnya:

explain SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';



Saat ini jika query yang sama hanya dijalankan berdasarkan 408 record yang berarti terdapat efisiensi query sebesar 500%!

CPU Load dari server/hosting anda seharusnya akan turun jika sebelumnya masalah autoload ini menjadi kendala.

— Artikel ini disadur dari gubatron.com —