我发现多lessinnodb池大小已经分配内存从show innodb status但我不知道它有多less实际使用。 也许它需要更多,或者我可以从它的一些记忆? 如何find它? 哦,还有一个问题,因为我对innodbconfiguration游乐场有点新鲜感 – 它使用了两种不同的记忆,对吧? 一个是ram,另一个是disk,是的?
BUFFER POOL AND MEMORY ---------------------- Total memory allocated 7162316778; in additional pool allocated 1048576 Buffer pool size 393216 Free buffers 0 Database pages 380971 Modified db pages 1906 Pending reads 0 Pending writes: LRU 0, flush list 1, single page 0 Pages read 16986872, created 474559, written 9972877 0.00 reads/s, 39.33 creates/s, 353.48 writes/s Buffer pool hit rate 1000 / 1000
我目前已经将池大小设置为(请参阅下面)我的12GB服务器。
innodb_buffer_pool_size = 6G
InnoDB池推荐2/3的RAM。
不,所有的内存池,但它有一个复杂的布局,并使用额外的内存池,再加上一些更多的RAM内部需要。
大部分的InnoDB池只是数据的caching。 所以确实没有办法确定“需要”多less。 可能不是因为你的数据库的大小超过了池。
在你的输出中你可以看到Freebuffers = 0.所以所有的内存都被使用了,但是正如我之前所说的那样,这意味着你的数据库可以使用所有的RAM。
“缓冲池命中率1000/1000”意味着你有很高的命中率(所有的请求使用池,而不是磁盘),所以不用担心或增加缓冲区。
从您提供的输出中,您的6千兆字节的RAM已被充分利用。 这并不意味着你没有足够的使用 – 这只是意味着在某个时刻,从驱动器中读取了大量的数据。 您需要查找的是有关系统利用率的其他详细信息。 如果你有很多的驱动器活动,这可能是一个指标,你需要更多的内存专用于InnoDB。 这可能意味着许多其他的事情。
因为有这么多的关于这个级别的调整,我build议你检查出http://www.mysqlperformanceblog.com并做几个小时的阅读。
通常,我只是设置innodb缓冲区大小=(总innodb表的累计大小+ 10-25%)
一些查询,我发现可以帮助find总的innodb表大小http://vbtechsupport.com/462/