2016-07-22 71 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塊。當它變滿時(根據你的數字,它不會),它會以「最近最少使用」的順序排出大塊。 –