我们在一个相当大的服务器(2 x四核eons,24gb RAM,2.5“的RAID10中,我们正在运行适度的大小(350亿行,50亿行,50GB)的数据库),并获得一些非常慢的插入件(例如单行的简单插入,需要90秒!)。

我们的Innodb_buffer_pool_size设置为400MB,通常对于这种设置来说通常太低。但是,我们的托管提供商建议在ZFS上运行时这是无关紧要的。他是对吗?

(为 https://dba.stackexchange.com/questions/1975/is-tuning-the-innodb-buffer-pool-size-important-on-solaris-zfs ,但我不确定多大观众在那边!)

有帮助吗?

解决方案

我仍然将Innodb_buffer_pool_size高得多400米。原因? innodb缓冲池仍将缓存频繁访问的表所需的数据和索引页。

运行此查询以在MB中获取推荐的InnoDB_Buffer_Pool_Size:

选择concat(圆形(kbs / power(1024,if(pw <0,0,if(pw> 3,0,pw))),substr('kmg',if(pw <0, 0,if(pw> 3,0,pw))+ 1,1))推荐_innodb_buffer_pool_size(从Information_schema.Tables中选择Sum(data_length + index_length)kbs,其中leable='innodb')a,(选择2 pw)b; 只需使用此查询的结果或80%安装的RAM(在您的情况下为19660M),以较小的方式。

我还将将Innodb_log_file_size设置为InnoDB缓冲池大小的25%。不幸的是,InnoDB_Log_file_size的最大值为2047米。 (截至2g的1米),因此,自Innodb_buffer_Pool_Size的25%的InnoDB_Buffer_Pool_Size的InnodB_Log_file_size设置为4915米。

又一个推荐是禁用酸合规性。使用0或2 for innodb_flush_log_at_trx_commit(默认为1个支持酸合规性),这将产生更快的InnoDB写入在发生崩溃时失去1秒的价值

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top