innodb 缓冲池需要多少内存?

6 mysql innodb

我读到这里

您需要比您的数据(Innodb TableSpaces 的总大小)大一点(比如 10%)的缓冲池

另一方面,我读过 elswher innodb_buffer_pool_size 必须达到内存的 %80。所以我真的很困惑我应该如何为游泳池选择最佳尺寸。我的数据库大小约为 6GB,总内存为 64GB。另外,我想知道是否增加缓冲池大小,我应该缩小最大连接数以腾出额外缓冲区的空间,或者这些参数是独立的。谢谢

Rol*_*DBA 8

如果您严格遵守增加 10% 的规则,这是我的建议:

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 growth) BBB
        WHERE ENGINE='InnoDB'
    ) AA
) A;
Run Code Online (Sandbox Code Playgroud)

这正是你需要设置什么产生innodb_buffer_pool_size/etc/my.cnf。如果你想占数据和索引随时间增长 25%,请(SELECT 1 growth) BBB改为(SELECT 1.25 growth) BBB

最近,我在 DBA StackExchange 中回答了另一个类似的问题