จำนวนของอินสแตนซ์บัฟเฟอร์พูลควรเพิ่มขึ้นเพื่อหลีกเลี่ยงการโต้แย้งของพูลพูล mutex
ด้วยขนาดบัฟเฟอร์พูล 8GB ฉันสงสัยว่าคุณจะเคยเห็นการโต้แย้งของพูลพูล mutex
อัพเดท 0 :
ฉันพูดถึงบัฟเฟอร์พูล 8Gb ในคำตอบในคำถามเดิมหน่วยความจำทั้งหมดคือ 8GB แน่นอนว่าบัฟเฟอร์พูลต้องน้อยกว่า 8GB เสียง 4GB เริ่มต้นที่ดี แต่ต้องแน่ใจว่าไม่มีการสลับสับเปลี่ยน
อัปเดต 1 :
// จากสไลด์ของ Yasufumi (ใน MySQL รุ่นล่าสุดผลลัพธ์อาจแตกต่างกันเล็กน้อย)
เพื่อตรวจสอบว่ามีการช่วงชิงบน mutex ของพูลบัฟเฟอร์รวบรวมโหลSHOW ENGINE INNODB STATUS
ตัวอย่างในช่วงเวลาสูงสุดหรือไม่
จากนั้นรวมเข้าด้วยกันโดยใช้ข้อมูลโค้ดของเชลล์:
#!/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
ซึ่งให้ผลลัพธ์เช่นนี้
.....
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
หากคุณเห็นจำนวน mutex ของบัฟเฟอร์พูลสูงรอถึงเวลาที่จะพิจารณาอินสแตนซ์พูลบัฟเฟอร์หลายอินสแตนซ์ การโต้แย้งไม่น่าจะเกิดขึ้นในบัฟเฟอร์พูลขนาดเล็กกว่า ~ 48G