Jumlah instance buffer pool harus ditingkatkan untuk menghindari pertikaian mutex pool buffer.
Dengan ukuran buffer pool 8GB saya ragu Anda akan melihat pertentangan mutex pool buffer.
PEMBARUAN 0 :
Saya menyebutkan buffer pool 8Gb dalam jawaban sementara dalam pertanyaan awal total memori adalah 8GB. Tentu, buffer pool harus kurang dari 8GB. 4GB terdengar seperti awal yang baik tetapi pastikan tidak terjadi pertukaran.
PEMBARUAN 1 :
// dari slide Yasufumi (dalam versi MySQL terbaru, output mungkin sedikit berbeda)
Untuk menentukan apakah ada pertikaian pada pool kumpulan mutex, kumpulkan selusin SHOW ENGINE INNODB STATUS
sampel selama waktu puncak.
Kemudian agregat menggunakan snippet shell:
#!/bin/sh
cat $1.innodb | grep "Mutex at " | cut -d"," -f1 | sort | uniq -c > /tmp/tmp1.txt
cat $1.innodb | grep "lock on " | cut -d"-"
-f2- | sort | uniq -c > /tmp/tmp2.txt
cat /tmp/tmp1.txt /tmp/tmp2.txt | sort -n > $1.contention rm /tmp/tmp1.txt /tmp/tmp2.txt
yang memberikan output seperti ini:
.....
4 lock on RW-latch at 0x7fb86b2c9138 created in file dict/dict0dict.c line 1356
6 lock on RW-latch at 0x7fb86b2c4138 created in file dict/dict0dict.c line 1356
12 lock on RW-latch at 0x7fb86b2d9538 created in file dict/dict0dict.c line 1356
20 lock on RW-latch at 0x7fb86b2db138 created in file dict/dict0dict.c line 1356
22 Mutex at 0x7fb86b28f0e0 created file btr/btr0sea.c line 139
30 lock on RW-latch at 0x7fb86b2ba938 created in file dict/dict0dict.c line 1356
36 lock on RW-latch at 0x7fb86b2bad38 created in file dict/dict0dict.c line 1356
71 Mutex at 0x7fb86b28ecb8 created file buf/buf0buf.c line 597
164 lock on RW-latch at 0x7fb86b28f0b8 created in file btr/btr0sea.c line 139
Jika Anda melihat jumlah tinggi mutex pool penyangga menunggu, maka inilah saatnya untuk mempertimbangkan beberapa instance pool penyangga. Perselisihan tidak mungkin terjadi pada buffer pool yang lebih kecil dari ~ 48G.