Heim  >  Artikel  >  Datenbank  >  So legen Sie Innodb_buffer_pool_size in MySQL fest

So legen Sie Innodb_buffer_pool_size in MySQL fest

WBOY
WBOYnach vorne
2023-05-29 08:52:404352Durchsuche

    Innodb_buffer_pool_size-Einstellungsmethode

    Cache-Daten von InnoDB-Tabellen, Indizes und anderen Hilfspuffern werden im Speicherbereich im Pufferpool gespeichert. Die Größe des Pufferpools ist wichtig für die Systemleistung. Ein größerer Pufferpool kann die Festplatten-E/A für mehrere Zugriffe auf dieselben Tabellendaten reduzieren. Es ist möglich, die Pufferpoolgröße auf 80 % der physischen Speichergröße des Computers auf einem dedizierten Datenbankserver festzulegen >

    InnoDB-Seitengröße (Standard 16 KB). Auf einer Seite sind viele Werte enthalten, und die Seitengröße ermöglicht eine einfache Konvertierung in Bytes.

      Innodb_buffer_pool_chunk_size
    • Innodb_page_size

    • InnoDB页面大小(默认为16KB)。页面中包含许多值,页面大小使它们可以轻松转换为字节。

    • Innodb_buffer_pool_chunk_size

    • innodb_buffer_pool_chunk_size 定义InnoDB缓冲池大小调整操作的块大小。默认128M。最大值可设置innodb_buffer_pool_size / innodb_buffer_pool_instances

    • innodb_buffer_pool_instances

    • InnoDB 缓冲池划分为的区域数。

    • Innodb_buffer_pool_pages_data

    • 数页在 InnoDB 缓冲池中包含的数据。该数字包括 脏页和干净页。使用压缩表时,报告的 Innodb_buffer_pool_pages_data 值可能大于 Innodb_buffer_pool_pages_total (错误#59550)。

    • Innodb_buffer_pool_pages_total

    • InnoDB 缓冲池 的总大小(以页为单位)。使用压缩表时,报告的 Innodb_buffer_pool_pages_data 值可能大于 Innodb_buffer_pool_pages_total (错误#59550)

    2)运行状态变量

    • Innodb_buffer_pool_pages_flushed

    • 从缓冲池刷新页面的请求数 。

    • Innodb_buffer_pool_read_requests

    • 表示从内存中读取逻辑的请求数。

    • Innodb_buffer_pool_reads

    • InnoDB 不能从缓冲池满足的逻辑读取的数量,必须直接从磁盘读取。

    • Innodb_buffer_pool_wait_free

      innodb_buffer_pool_chunk_size definiert die Blockgröße für Größenänderungsvorgänge des InnoDB-Pufferpools. Der Standardwert ist 128 MB. Der Maximalwert kann eingestellt werden innodb_buffer_pool_size / innodb_buffer_pool_instances
    • innodb_buffer_pool_instances

    Die Anzahl der Bereiche, in die der InnoDB-Pufferpool unterteilt ist.

    Innodb_buffer_pool_pages_data

    Anzahl der im InnoDB-Pufferpool enthaltenen Datenseiten. Diese Zahl umfasst schmutzige und saubere Seiten. Bei Verwendung komprimierter Tabellen kann der gemeldete Innodb_buffer_pool_pages_data-Wert größer als Innodb_buffer_pool_pages_total sein (Fehler #59550).

    Innodb_buffer_pool_pages_total

    Die Gesamtgröße des InnoDB-Pufferpools in Seiten. Bei Verwendung komprimierter Tabellen kann der gemeldete Innodb_buffer_pool_pages_data-Wert größer sein als Innodb_buffer_pool_pages_total (Bug #59550)

    • 2) Ausführungsstatusvariable

    • Innodb_buffer_pool_pages_flushed
    • .
    • Aktualisieren Sie die Seite von der Pufferpool Anzahl der Anfragen.

    Innodb_buffer_pool_read_requests

    stellt die Anzahl der Anfragen zum Lesen von Logik aus dem Speicher dar.

    🎜🎜Innodb_buffer_pool_reads🎜🎜🎜🎜Die Anzahl der logischen Lesevorgänge, die InnoDB nicht aus dem Pufferpool erfüllen kann und die direkt von der Festplatte gelesen werden müssen. 🎜🎜🎜🎜Innodb_buffer_pool_wait_free🎜🎜🎜🎜Normalerweise erfolgen Schreibvorgänge in den InnoDB-Pufferpool im Hintergrund. Wenn InnoDB eine Seite lesen oder erstellen muss und keine sauberen Seiten verfügbar sind, löscht InnoDB zunächst einige fehlerhafte Seiten und wartet, bis der Vorgang abgeschlossen ist. Dieser Zähler zählt diese wartenden Instanzen. Bei korrekter Einstellung sollte innodb_buffer_pool_size ein kleinerer Wert sein. 🎜🎜🎜🎜Angemessene Einstellung der Pufferpool-bezogenen Parameter🎜🎜🎜1 ist standardmäßig auf 80 % des Systemspeichers eingestellt und wird dann gemäß den folgenden Regeln an die tatsächliche Situation angepasst🎜🎜
    mysql> show global status like 'Innodb_buffer_pool_pages_data';
    +-------------------------------+---------+
    | Variable_name                 | Value   |
    +-------------------------------+---------+
    | Innodb_buffer_pool_pages_data | 1894874 |
    +-------------------------------+---------+
    1 row in set (0.00 sec)
    
    mysql>  show global status like 'Innodb_buffer_pool_pages_total';
    +--------------------------------+---------+
    | Variable_name                  | Value   |
    +--------------------------------+---------+
    | Innodb_buffer_pool_pages_total | 1965960 |
    +--------------------------------+---------+
    1 row in set (0.00 sec)
    
    # 计算是否应该添加内存
    使用率 = Innodb_buffer_pool_pages_data/Innodb_buffer_pool_pages_total*100%
    当结果 > 95% 则增加 innodb_buffer_pool_size
    当结果 < 95% 则减少 innodb_buffer_pool_size, 可适当较少,当然独享业务机器多了也没啥问题
    🎜🎜2 Standardmäßig auf 8 eingestellt, minimal 1, maximal 64🎜🎜🎜Bei Systemen mit Pufferpools im Multi-Gigabyte-Bereich kann die Aufteilung des Pufferpools in mehrere separate Instanzen die Parallelität verbessern, indem die Konkurrenz für verschiedene Threads zum Lesen und Schreiben von Cache-Seiten reduziert wird. Diese Funktion wird typischerweise auf Systemen mit Pufferpoolgrößen im Multi-GB-Bereich verwendet. Mehrere Pufferpoolinstanzen werden mit der Konfigurationsoption innodb_buffer_pool_instances konfiguriert. Sie können auch den Wert innodb_buffer_pool_size anpassen. 🎜🎜Viele Datenanforderungen können durch Abrufen aus dem Speicher erfüllt werden, insbesondere wenn der InnoDB-Pufferpool groß ist. Es kann zu einem Engpass kommen, wenn mehrere Threads gleichzeitig versuchen, auf den Pufferpool zuzugreifen. Sie können mehrere Pufferpools aktivieren, um diesen Konflikt zu minimieren. Seiten im Pufferpool werden gespeichert oder gelesen, indem jede Seite mithilfe einer Hash-Funktion zufällig einem Speicherort im Pufferpool zugeordnet wird. Jeder Pufferpool verwaltet seine eigene freie Liste, Flush-Liste, LRU und alle anderen mit dem Pufferpool verbundenen Datenstrukturen und ist durch seinen eigenen Pufferpool-Mutex geschützt. 🎜🎜Um mehrere Pufferpoolinstanzen zu aktivieren, legen Sie die Konfigurationsoption innodb_buffer_pool_instances auf einen Wert größer als 1 (Standard) bis maximal 64 (Maximum) fest. Diese Option wird nur wirksam, wenn innodb_buffer_pool_size auf 1 GB oder mehr eingestellt ist. Die von Ihnen angegebene Gesamtgröße wird allen Pufferpools zugewiesen. Geben Sie für optimale Effizienz eine Kombination aus innodb_buffer_pool_instances und innodb_buffer_pool_size an, sodass jede Pufferpoolinstanz mindestens 1 GB groß ist. 🎜🎜Zusammenfassung: 🎜
    # cat /etc/my.cnf
    [mysqld]
    ......
    innodb_buffer_pool_size = 系统内存%80
    innodb_buffer_pool_instances = 大于8的情况下,每个缓冲池实例至少1GB
    ......
    🎜Referenz: 🎜🎜🎜🎜https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html🎜🎜🎜🎜https://dev.mysql.com/ doc/refman/5.7/en/server-status-variables.htm🎜🎜🎜🎜https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-resize.html🎜🎜🎜🎜 Stellen Sie den Parameter innodb_buffer_pool_size auf die Speichergröße ein, die zum Zwischenspeichern von Indizes und Daten verwendet wird. Je mehr Daten im Speicher gelesen und geschrieben werden, desto schneller erfolgt das Lesen und Schreiben auf die Festplatte. 🎜🎜Wenn die Daten übermittelt werden oder die Prüfpunktbedingungen erfüllt sind, werden die Speicherdaten sofort auf der Festplatte aktualisiert. 🎜🎜Der Speicher wird jedoch auch von anderen Prozessen des Betriebssystems oder der Datenbank genutzt. Erfahrungsgemäß empfiehlt es sich, innodb-buffer-pool-size auf 75 % des gesamten verfügbaren Speichers des Servers zu setzen. Bei unsachgemäßer Einstellung kann es zu unnötiger oder übermäßiger Speichernutzung kommen. 🎜

    对于繁忙的服务器, buffer pool 将划分为多个实例以提高系统并发性, 减少线程间读写缓存的争用。buffer pool 的大小首先受 innodb_buffer_pool_instances 影响, 当然影响较小。

    1.Innodb_buffer_pool_pages_data: Innodb buffer pool缓存池中包含数据的页的数目,包括脏页。单位是page。

    show global status like &#39;Innodb_buffer_pool_pages_data&#39;;

    2.Innodb_buffer_pool_pages_total: innodb buffer pool的页总数目。单位是page。

    show global status like &#39;Innodb_buffer_pool_pages_total&#39;;

    3.show global status like 'Innodb_page_size'; 查看@@innodb_buffer_pool_size大小,单位字节

    SELECT @@innodb_buffer_pool_size/1024/1024/1024; #字节转为G

    4.在线调整InnoDB缓冲池大小,如果不设置,默认为128M

    set global innodb_buffer_pool_size = 4227858432; ##单位字节

    计算Innodb_buffer_pool_pages_data/Innodb_buffer_pool_pages_total*100%

    • 当结果 > 95% 则增加 innodb_buffer_pool_size, 建议使用物理内存的 75%

    • 当结果 < 95% 则减少 innodb_buffer_pool_size, 建议设置大小为: Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (1024*1024*1024)

    Das obige ist der detaillierte Inhalt vonSo legen Sie Innodb_buffer_pool_size in MySQL fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen