Di log kueri lambat MySQL kami, kueri kumulatif paling lambat adalah pembaruan sederhana ke wp_postmeta. Ini sebuah contoh:
UPDATE `wp_postmeta`
SET `meta_value` = '1392835505:386'
WHERE `post_id` = 94705 AND `meta_key` = '_edit_lock';
Detail yang relevan pada pengaturan kami:
- Waktu permintaan MySQL lambat diatur ke 1s
- mesin penyimpanan wp_postmeta adalah InnoDB
- Berjalan di dalam instalasi Multisite besar dengan puluhan ribu posting di blog WP utama (di mana permintaan lambat ini terjadi)
- Aktivitas tinggi di area admin WP (banyak penulis / editor bekerja secara bersamaan, tetapi umumnya pada konten mereka sendiri (bukan yang lain))
- Aktivitas rendah di sisi publik WP (tidak benar-benar menyajikan konten dari blog utama)
- Semua pertanyaan lambat tampaknya menggunakan kunci "_edit_lock"; kueri dengan format yang sama (yang menggunakan kunci selain "_edit_lock") tampaknya tidak lambat.
Mengapa ini adalah permintaan paling lambat pada sistem kami? Apakah ada hubungannya dengan penggunaan khusus "edit kunci" WP?
Terima kasih! :)
Pembaruan: Output dari mysqlsla di bawah ini:
______________________________________________________________________ 001 ___
Count : 606 (16.83%)
Time : 2257.760468 s total, 3.725677 s avg, 1.00512 s to 84.645869 s max (20.60%)
95% of Time : 1355.289277 s total, 2.357025 s avg, 1.00512 s to 12.343604 s max
Lock Time (s) : 182.502 ms total, 301 μs avg, 29 μs to 157.542 ms max (0.21%)
95% of Lock : 22.882 ms total, 40 μs avg, 29 μs to 57 μs max
Rows sent : 0 avg, 0 to 0 max (0.00%)
Rows examined : 1 avg, 1 to 2 max (0.00%)
Database : xxx_wp
Users :
xxx_wp@localhost : 98.84% (599) of query, 51.03% (1837) of all users
yyy_wp@localhost : 1.16% (7) of query, 0.94% (34) of all users
Query abstract:
SET timestamp=N; UPDATE wp_postmeta SET meta_value = 'S' WHERE post_id = N AND meta_key = 'S';
Query sample:
SET timestamp=1392835506;
UPDATE `wp_postmeta` SET `meta_value` = '1392835505:386' WHERE `post_id` = 94705 AND `meta_key` = '_edit_lock';
SELECT * FROM wp_postmeta WHERE meta_key='_edit_lock'
; ?SELECT
entri ini? SepertiSELECT * FROM
wp_postmeta` WHEREpost_id
= 94705 ANDmeta_key
= '_edit_lock'; `?Jawaban:
_edit_lock dihasilkan setiap kali Anda mengedit posting atau halaman. itu terdiri kode waktu dan pengguna. jadi WordPress mengetahui siapa yang sedang mengeditnya.
jika Anda memanipulasinya WordPress bereaksi entah bagaimana sensitif ... Saya mencoba untuk mengambil berapa detik seseorang bekerja pada sebuah posting. Semua waktu itu merusak waktu pemuatan basis data saya.
Seperti yang Anda katakan Anda menjalankan ini pada multisite besar. Tidak tahu berapa banyak pengguna menulis posting di sana, tetapi pasti bisa merusak RAM server jika banyak orang mengedit posting pada saat yang sama.
Solusi dapat berupa: singkirkan _edit_lock
Bagaimana cara menonaktifkan "Kunci Posting / Edit Kunci"?
Biasanya WordPress harus memiliki "_edit_lock" satu per Posting. Beberapa database memiliki masalah menghasilkannya setiap waktu.
Suka pria ini http://wordpress.org/support/topic/can-i-remove-_edit_lock-_edit_last-from-wp_postmeta
Solusinya adalah menghapus semuanya. Untuk mempercepatnya, Anda dapat menghapusnya setiap malam pada jam 3 di phpMyAdmin with
mungkin Anda menemukan pekerjaan cron melakukan hal itu.
sumber
coba ini :)
sumber