Die Anzahl der Pufferpoolinstanzen sollte erhöht werden, um Mutexkonflikte im Pufferpool zu vermeiden.
Bei einer Pufferpoolgröße von 8 GB bezweifle ich, dass Sie jemals den Mutex-Konflikt im Pufferpool sehen werden.
UPDATE 0 :
Ich erwähne 8 GB Pufferpool in der Antwort, während in der ursprünglichen Frage der Gesamtspeicher 8 GB betrug. Sicher, der Pufferpool muss weniger als 8 GB betragen. 4 GB klingen nach einem guten Start, aber stellen Sie sicher, dass kein Austausch stattfindet.
UPDATE 1 :
// von Yasufumis Folien (in neueren MySQL-Versionen kann die Ausgabe geringfügig abweichen)
Um festzustellen, ob ein Konflikt im Pufferpool-Mutex vorliegt, sammeln Sie SHOW ENGINE INNODB STATUS
während der Spitzenzeit ein Dutzend Proben.
Aggregieren Sie es dann mit einem Shell-Snippet:
#!/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
was eine Ausgabe wie diese ergibt:
.....
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
Wenn Sie feststellen, dass die Anzahl der Mutex-Wartezeiten im Pufferpool hoch ist, müssen Sie mehrere Pufferpoolinstanzen berücksichtigen. Es ist unwahrscheinlich, dass der Konflikt in einem Pufferpool auftritt, der kleiner als ~ 48G ist.