Liczba instancji puli buforów powinna zostać zwiększona, aby uniknąć rywalizacji o muteks puli buforów.
W przypadku puli buforów o wielkości 8 GB wątpię, czy kiedykolwiek zobaczysz rywalizację o muteks puli buforów.
AKTUALIZACJA 0 :
Wspominam o puli buforów 8 Gb w odpowiedzi, podczas gdy w pierwotnym pytaniu całkowita pamięć wynosiła 8 GB. Jasne, pula buforów musi być mniejsza niż 8 GB. 4 GB to dobry początek, ale upewnij się, że nie nastąpi zamiana.
AKTUALIZACJA 1 :
// ze slajdów Yasufumi (w najnowszych wersjach MySQL dane wyjściowe mogą się nieznacznie różnić)
Aby ustalić, czy istnieje spór o muteks puli buforów, zbierz kilkanaście SHOW ENGINE INNODB STATUS
próbek w czasie szczytu.
Następnie agreguj go za pomocą fragmentu powłoki:
#!/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
co daje takie wyjście:
.....
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
Jeśli widzisz wysoką liczbę muteksów w puli buforów, czas rozważyć kilka instancji puli buforów. Rywalizacja raczej nie zdarzy się na puli buforów mniejszej niż ~ 48G.