Tampon havuzu muteks çekişmesini önlemek için tampon havuzu örneklerinin sayısı artırılmalıdır.
Tampon havuzu boyutu 8GB ile hiç tampon havuzu mutex çekişme göreceksiniz şüpheliyim.
GÜNCELLEME 0 :
Orijinal soruda toplam bellek 8GB iken cevapta 8GB tampon havuzundan bahsediyorum. Elbette, arabellek havuzu 8 GB'den az olmalıdır. 4GB iyi bir başlangıç gibi geliyor ancak değiştirmenin gerçekleşmediğinden emin olun.
GÜNCELLEME 1 :
// Yasufumi'nin slaytlarından (son MySQL sürümlerinde çıktı biraz farklı olabilir)
Tampon havuzu muteksinde bir çekişme olup olmadığını belirlemek SHOW ENGINE INNODB STATUS
için pik zaman boyunca bir düzine numune toplayın .
Ardından kabuk snippet'ini kullanarak toplayın:
#!/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
bu şekilde çıktı verir:
.....
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
Çok sayıda arabellek havuzu muteksi beklediğini görürseniz, birden çok arabellek havuzu örneğini düşünmenin zamanı gelmiştir. Çekişmenin ~ 48G'den daha küçük bir tampon havuzunda gerçekleşmesi olası değildir.