簡體   English   中英

在MySQL 5.7+中找出innodb_buffer_pool_size的正確值

[英]Figuring out right value for innodb_buffer_pool_size in MySQL 5.7+

我試圖了解如何評估MySQL中innodb_buffer_pool_size值的任何改進范圍,而與所使用的硬件無關。 我遇到了社區中建議的兩種最常見的方法: 從當前數據> =〜5-10%的值+ index_data大小b開始。 將其設置為總可用RAM的〜75-80%。

我不確定應該根據哪些方向決定采取這些指示?

我瀏覽了以下文章: 設置為75%的RAM ,其中說使用查詢1來查找總數據大小,如果超出可用的RAM大小,則分配該大小的75%。 另一方面, 本文說使用下面的查詢2來適應額外的5%的增長並分配該值。

這些值有何不同? 查詢1是否僅考慮了緩沖池中的當前數據大小,而查詢2是整個數據庫(數據+索引)的大小?我也不遵循查詢中引入的“ 1.1”是什么2。

查詢1:

SET @IBPSize = (SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'Innodb_page_size'); -- SELECT @IBPSize;
SET @IBPDataPages = (SELECT VARIABLE_VALUE FROM information_schema.global_status WHERE VARIABLE_NAME = 'Innodb_buffer_pool_pages_data'); -- SELECT @IBPDataPages;
SET @IBPSize = concat(ROUND(@IBPSize * @IBPDataPages / (1024*1024*1024) * 1.05, 2), ' GB' );
SELECT @IBPSize;

查詢2:

SELECT CONCAT(CEILING(RIBPS/POWER(1024,pw)),SUBSTR(' KMGT',pw+1,1))
Recommended_InnoDB_Buffer_Pool_Size FROM
(
    SELECT RIBPS,FLOOR(LOG(RIBPS)/LOG(1024)) pw
    FROM
    (
        SELECT SUM(data_length+index_length)*1.1*growth RIBPS
        FROM information_schema.tables AAA,
        (SELECT 1.05 growth group by growth) BBB
        WHERE ENGINE='InnoDB'
    ) AA
) A;

buffer_pool從兩個方向拉:

更多:緩沖池越大,可以緩存的緩存越多,因此處理速度更快。 但是,如果它太大而導致交換,那么,這對於性能來說是可怕的。 結論:“更多,但不要太多”。

更少:如果只有很少的數據集,為什么要浪費RAM? 但是數據集可能會增長,那么為什么還要設置為“ small”呢? MySQL不會因為buffer_pool大於數據集而受到損害,因此SELECT大多是在浪費時間。

讓我們看一下需要什么RAM:

  • 操作系統
  • MySQL代碼
  • 其他緩沖區,緩存等
  • 同一台計算機上運行的其他應用程序。

很難確切地說出它們的總和,因此缺少精確的公式。

因此,如果您假設計算機上沒有其他應用程序,則可以提出一個簡單的公式。

計划A:假設1GB用於“其他內容”,然后將剩余的80%留給緩沖池。 但是,如果您只有1GB的RAM,那么這將分崩離析。

方案B:只需說一下RAM的70%。 這樣效果更好,但是如果您的RAM不足4GB,則給出的數字太大,而對於較大的計算機,數字太小。

方案C:“ 75-80%”。 這適用於大型計算機。

計划D:如前所述,計算您擁有的數據量。 但這只是一個“下界”。 但是,如果這導致交換,那就不好了。 因此,如果沒有列出一些注意事項,這將毫無用處。

注意:所有這些討論都適用於包含InnoDB的所有版本,該版本可以追溯到4.0。

同時,如果除了系統表之外使用MyISAM,請設置key_buffer_size = 40M 需要一些空間,但不多。

如果你同時使用MyISAM和InnoDB(或只是MyISAM數據),見http://mysql.rjweb.org/doc.php/memory

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM