Il numero di istanze del pool buffer deve essere aumentato per evitare la contesa del mutex del pool buffer.
Con dimensioni del pool buffer di 8 GB, dubito che vedrai mai la contesa del mutex del pool buffer.
AGGIORNAMENTO 0 :
Cito il buffer pool da 8 GB nella risposta mentre nella domanda originale la memoria totale era di 8 GB. Certo, il pool di buffer deve essere inferiore a 8 GB. 4 GB sembra un buon inizio, ma assicurati che non si verifichino scambi.
AGGIORNAMENTO 1 :
// dalle diapositive di Yasufumi (nelle versioni recenti di MySQL l'output potrebbe essere leggermente diverso)
Per determinare se è presente una contesa sul pool di buffer, il mutex raccoglie una dozzina di SHOW ENGINE INNODB STATUS
campioni durante l'ora di punta.
Quindi aggregalo usando lo snippet di 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
che fornisce un output come questo:
.....
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
Se vedi un conteggio elevato delle attese di mutex del pool buffer, è tempo di prendere in considerazione più istanze del pool buffer. È improbabile che la contesa si verifichi su un pool di buffer più piccolo di ~ 48G.