Database Wordpress Lambat - haruskah saya beralih ke InnoDB?


12

Saya memiliki situs WordPress dengan lebih dari 10k posting, dan segalanya mulai menjadi sangat lambat setiap kali saya menambahkan dan mengedit posting. Halaman memuat baik dan cepat untuk pengguna, bersama dengan daftar admin posting, tetapi ketika menulis atau pembaruan terjadi server pergi ke CPU 100% dan membutuhkan waktu lama (kadang-kadang lebih lama dari PHP 60-an waktu habis).

Saya berpikir bahwa ini mungkin dilakukan dengan penguncian tingkat meja MyISAM, dan saya berpikir untuk beralih ke InnoDB. Apa implikasi dari melakukan ini?

Beberapa statistik:

select  - per hour ~22k
update  - per hour ~7.6k
set option  - per hour ~7k

Saya tahu ada banyak optimasi lain yang bisa saya lakukan, tetapi perasaan saya adalah bahwa ini mungkin memiliki dampak terbesar.

Terima kasih

Sunting : Saya telah menemukan salah satu masalah utama yang menyebabkan kelambatan, itu adalah YARPP (Yet Other Related Posts Plugin) yang meregenerasi "keterkaitan" setiap kali, dan ini tampaknya disebabkan oleh tag 2k + yang kami miliki. Saya mematikan opsi "pertimbangkan tag" dan itu telah dipercepat.

Juga, plugin lain yang meregenerasi hal-hal dapat menyebabkan masalah seperti ini, seperti beberapa plugin sitemap XML.

Jadi, masalah langsung saya diselesaikan, meskipun saya masih ingin mendengar jawaban yang baik untuk InnoDB vs MyISAM untuk Wordpress!

Jawaban:


11

Saya memang akan beralih ke InnoDB. Penguncian meja / penguncian baris telah lama dibahas oleh banyak orang. Saya akan selalu memilih InnoDB tangan ke bawah. Namun, ada alasan mendalam lainnya untuk memilih InnoDB ... CACHING .

Sementara kebanyakan orang menyombongkan bahwa MyISAM lebih cepat untuk dibaca, kebanyakan orang lupa bahwa banyak cache untuk MyISAM, yang disebut cache kunci (ditetapkan oleh key_buffer_size), hanya cache halaman indeks dari file .MYI. Itu tidak pernah cache halaman data. Ini memiliki maksimum resmi 4GB dalam Sistem 32-bit. 8GB maksimum terbaik untuk 64-bit.

Pool Buffer InnoDB menyimpan data dan halaman indeks. Bergantung pada server yang Anda miliki, Anda dapat menyimpan cache hingga seluruh dataset dalam RAM. Anda dapat menyetel InnoDB hingga 80% RAM dan 10% untuk DB Conenctions, dan biarkan 10% untuk OS. Ini berlaku bahkan untuk sistem operasi yang berbeda .

Saya telah merekomendasikan hal-hal ini untuk pelanggan Drupal dengan kesuksesan luar biasa. Ini berlaku untuk Wordpress juga. Saya telah memberikan dukungan DB untuk klien dengan WordPress. Perbaikan yang sama.

Anda selalu dapat mengonfigurasi memori untuk InnoDB lebih efektif sehingga Anda dapat lebih banyak MyISAM. Selalu ada cara untuk mengubah InnoDB agar sesuai dengan kebutuhan kinerja Anda . Saat data Anda tumbuh, pada akhirnya akan menjadi persyaratan .


6

InnoDB mungkin tidak akan membantu Anda - penguncian tingkat halaman / baris membantu mengurangi pertengkaran, tetapi sepertinya itu bukan masalah Anda.

Ada banyak hal di luar sana yang menunjukkan MyISAM lebih lambat dari InnoDB dalam skenario blog rata-rata (lebih banyak membaca daripada menulis).

Sebelum melakukan peralihan, Anda setidaknya harus melakukan yang berikut

  • jalankan mysqltuner yang akan memberi Anda beberapa konfigurasi konfigurasi (itu tidak sempurna atau semua yang tahu sekalipun)
  • nyalakan pencatatan permintaan lambat, biarkan selama satu hari atau lebih, dan kemudian mulai menyaring log, dan MENJELAJAHI kueri untuk melihat apa yang terjadi

Dari pengalaman pribadi, saya menemukan bahwa menambahkan indeks ke bidang yang tidak diindeks pada wp_comments membantu secara besar-besaran dalam situasi khusus saya (periode komentar bergejolak, di mana 10 atau lebih orang dapat mencoba berkomentar pada saat yang sama), dan mungkin saja mencari tahu pertanyaan apa yang berjalan lambat dan mengapa dapat mengarahkan Anda ke pemahaman yang lebih baik tentang masalah, dan solusi NYATA!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.