MYSQL 之SET GLOBAL innodb_buffer_pool_size =n

工作遇到一个情况是索引相同的情况下,mysql服务在linux上运行很快,在windows服务器上运行很慢,版本是V5.7以后得版本,同事查找了下说应该设置

 

SET GLOBAL innodb_buffer_pool_size =n,这个值貌似默认为128M。作用是

表示缓冲池字节大小,InnoDB缓存表和索引数据的内存区域。mysql默认的值是128M。最大值与你的CPU体系结构有关,在32位操作系统,最大值是 4294967295 (2^32-1) ,在64 位操作系统,最大值为18446744073709551615 (2^64-1)。在32位操作系统中,CPU和操作系统实用的最大大小低于设置的最大值。如果设定的缓冲池的大小大于1G,设置innodb_buffer_pool_instances的值大于1

其中n这个值越大性能越好,这个说法是不科学的,

但是查了一下网上的说法,正确的配置方法,应该是根据下面的情况来判断

 

 

mysql> SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_data'; 
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| Innodb_buffer_pool_pages_data | 1388  |
+-------------------------------+-------+
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 | 131071 |
+--------------------------------+--------+
1 row in set (0.00 sec)


mysql> SHOW GLOBAL STATUS LIKE 'Innodb_page_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Innodb_page_size | 16384 |
+------------------+-------+
1 row in set (0.00 sec)

'Innodb_buffer_pool_pages_data' X 100 / 'Innodb_buffer_pool_pages_total'

当结果 > 95% 则增加 innodb_buffer_pool_size, 建议使用 ram total 75%
当结果 < 95% 则减少 innodb_buffer_pool_size, 
建议 'Innodb_buffer_pool_pages_data' X 'Innodb_page_size' X 1.05 / (1024*1024*1024)

 

如果不在合理范围内的话貌似设置的数值再大也不能体现出优化效果,反而可能会造成

操作系统变慢占用更多的内存。

 

posted @ 2017-07-12 22:33  洛晨随风  阅读(5407)  评论(0编辑  收藏  举报