Gibt es eine Faustregel bezüglich der Größe und Anzahl der Pufferpoolinstanzen?

7

Ich weiß, dass der Konsens zu sein scheint, dass ungefähr 75% des RAM für den Pufferpool bestimmt sein sollten. Ich bin jedoch mehr an der optimalen Anzahl von Pufferpoolinstanzen interessiert. Was sind bei der Festlegung der Einstellung zu beachten?

Angenommen, ich habe einen Pufferpool von 75 GB. Sollte ich nur 75 Pufferpoolinstanzen mit jeweils 1 GB zuweisen? 15 zu je 5 GB? Oder 10 zu je 7,5 GB?

Sollte ich mit einem einzelnen Pufferpool beginnen und mich erhöhen, je nachdem, ob ich eine Sperre sehe oder nicht?

Worauf sollte die maximale Anzahl von Instanzen basieren - verfügbare Kerne?

Vielen Dank - Ihre Antwort wird sehr geschätzt.

user2732180
quelle
Dies ist eine ausgezeichnete Frage. Ich habe in letzter Zeit nicht viel über eine Faustregel im Pufferpool im Web gesprochen. +1 !!!
RolandoMySQLDBA

Antworten:

2

PUFFER POOL INSTANZEN

Die Faustregel, die ich normalerweise verwende, basiert auf einem speziellen Programm in der Linux-Umgebung

numactl --hardware

Wenn ich dies ausführe, erhalte ich die folgende Ausgabe

sh-4.1# numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3
node 0 size: 49151 MB
node 0 free: 241 MB
node 1 cpus: 4 5 6 7
node 1 size: 32768 MB
node 1 free: 39 MB
node 2 cpus: 8 9 10 11
node 2 size: 49152 MB
node 2 free: 49 MB
node 3 cpus: 12 13 14 15
node 3 size: 32752 MB
node 3 free: 32 MB
node distances:
node   0   1   2   3
  0:  10  16  16  16
  1:  16  10  16  16
  2:  16  16  10  16
  3:  16  16  16  10

Dies sagt mir schnell, wie viele CPUs und Kerne ich auf meinem DB Server habe.

Im Allgemeinen setze ich die innodb_buffer_pool_instances auf die Anzahl der physischen CPUs oder die Anzahl der Kerne. In Ihrem speziellen Fall setze ich die innodb_buffer_pool_instances auf 4 oder 16.

PUFFER POOL GRÖSSE

Wenn Sie den InnoDB-Pufferpool größer als 50% des installierten Arbeitsspeichers machen, beginnt mysqld, das Betriebssystem auszutauschen ... SCHLECHT !!!! Wenn Sie einen so großen Pufferpool benötigen, wird das Optimieren von innodb_buffer_pool_instances noch wichtiger.

EPILOG

Sobald innodb_buffer_pool_instances zum ersten Mal eingeführt wurde, habe ich sofort damit experimentiert. Ich hatte einen Client mit 192 GB DB Server, zwei Hexacore mit einem 162 GB Pufferpool. Ich habe es einfach auf 2 gesetzt und alles hat gut geklappt. Bitte lesen Sie meinen alten Beitrag vom 12. Februar 2011 dazu: Wie können Sie MySQL auf eine hohe InnoDB-Arbeitslast einstellen?

VERSUCHE ES !!!

RolandoMySQLDBA
quelle
Danke Rolando! - Tolle Erklärung wie immer. Interessant, Ihren Testverlauf zu sehen, um die richtige Größe zu finden. Was waren aus Neugier die Tauschergebnisse Ihrer Ergebnisse? Wie können Sie MySQL auf eine hohe InnoDB-Arbeitslast einstellen? - Sie haben das Follow-up im letzten Update erwähnt, aber ich sehe keine weiteren Kommentare.
user2732180
1

Sie sollten eine Kombination von innodb_buffer_pool_sizein Übereinstimmung mit verwendeninnodb_buffer_pool_instances

Sie sollten die innodb_buffer_pool_instancesKonfigurationsoption auf einen Wert größer als 1 (Standard) bis 64 (maximal) einstellen . Diese Option wird nur wirksam, wenn Sie innodb_buffer_pool_sizeeine Größe von 1 Gigabyte oder mehr festlegen . Die von Ihnen angegebene Gesamtgröße wird auf alle Pufferpools aufgeteilt. Geben Sie für eine optimale Effizienz eine Kombination von innodb_buffer_pool_instancesund an, innodb_buffer_pool_sizesodass jede Pufferpoolinstanz mindestens 1 Gigabyte beträgt.

Mahesh Patil
quelle