2016-07-22 69 views
0

我正在运行Percona集群5.6(mysql 5.6),允许为innodb缓冲池提供128G内存。 但是,工作台显示只有14%正在使用。 任何人都可以让我知道为什么缓冲池的使用率如此之低? 在此先感谢!MYSQL 5.6 Innodb缓冲池仅用于128G中的14%

这是我的InnoDB设置

innodb_stats_sample_pages=142 
innodb_stats_persistent_sample_pages=142 
innodb_stats_transient_sample_pages=142 
innodb_open_files=4000 
innodb_additional_mem_pool_size = 16M 
innodb_buffer_pool_size = 128G 
innodb_buffer_pool_instances = 8 
innodb_data_file_path = ibdata1:10M:autoextend 
innodb_write_io_threads = 32 
innodb_read_io_threads = 32 
innodb_thread_concurrency = 16 
innodb_flush_log_at_trx_commit = 2 
innodb_log_buffer_size =256M 
innodb_log_file_size = 256M 
innodb_log_files_in_group = 3 
innodb_max_dirty_pages_pct = 90 
innodb_lock_wait_timeout = 120 
innodb_buffer_pool_load_at_startup = ON 
innodb_file_format = Barracuda 
innodb_file_format_max = Barracuda 
query_cache_type = 0 
+0

什么是您的数据库大小? – ffeast

+0

因为您的数据量是缓冲池的14%。什么,你认为如果MySQL不需要它或什么,它会使用它所有的东西? –

回答

0

案例1:您的数据库(数据+指数)小于18GB。请输入SHOW TABLE STATUS(或涉及information_schema的更复杂的查询)来找出“Data_length”和“Index_length”(忽略“Data_free”)。情况2:您的数据大于18GB,但“工作集”小于此值。

在这两种情况下,都不用担心。

但是......你有多少RAM? 128G需要比RAM少;也许不超过80%的RAM。

您可能会添加SHOW GLOBAL STATUS LIKE 'Innodb%';

+0

数据库大小约为90G,服务器上的总RAM为256G。我认为它正在慢慢回暖。跑步5小时后现在已高达22%。只是想知道为什么整个数据库没有被缓存到缓冲区。它是否缓冲了所查询的内容? –

+0

许多答案:通过“缓存”的“定义”,块会根据需要被引入。突然加载90GB在启动时需要很长时间!如果你有1TB的数据,你会预装128GB?等 –

+1

它正在根据需要加载16KB块。当它变满时(根据你的数字,它不会),它会以“最近最少使用”的顺序排出大块。 –