MySQL5.6 Innodb資料頁 16K vs 8K效能對比測試

來源:互聯網
上載者:User

從MySQL5.6開始,一個新參數innodb_page_size可以設定Innodb資料頁為8K,4K,預設為16K。這個參數在一開始初始化時就要加入my.cnf裡,如果已經建立了表,再修改,啟動MySQL會報錯。

參考手冊:

650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131229/192F54151-0.jpg" alt="" />

下面我針對16K和8K做了一個壓力測試。

硬體:R710,72G記憶體,6塊300G、15000轉做的RAID10,XFS分區。

my.cnf參數:

 
  1. innodb_buffer_pool_size = 48G 
  2. innodb_buffer_pool_instances = 8 
  3. innodb_flush_method = O_DIRECT 
  4. innodb_file_per_table = 1
  5. innodb_read_io_threads = 16 
  6. innodb_write_io_threads = 16 
  7. innodb_io_capacity = 2000 
  8. innodb_log_files_in_group = 3 
  9. innodb_flush_log_at_trx_commit = 0 
  10. innodb_log_file_size = 1024M 
  11. innodb_max_dirty_pages_pct = 90 

1.Sysbench參數讀寫):

 
  1. sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=100000000 --max-requests=1000000 --num-threads=100  
  2. --mysql-host=192.168.110.121  --mysql-port=3306 --mysql-user=admin --mysql-password=123456 --mysql-db=test  
  3. --oltp-table-name=sbtest --mysql-socket=/tmp/mysql.sock run 

sbtest表1億條記錄,檔案大小24G。

下面是16K效能圖:

 
  1. innodb_page_size = 16k 

650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131229/192F52C2-1.jpg" alt="" />

650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131229/192F54025-2.jpg" alt="" />

下面是8K效能圖:

 
  1. innodb_page_size = 8k 

650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131229/192F53Q8-3.jpg" alt="" />

650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131229/192F54635-4.jpg" alt="" /> 

 
  1. 結論:預設頁16K,對CPU壓力較小,平均在20% 

  2. 8K頁,CPU壓力為30%~40%,但select輸送量要高於16K 


2.Sysbench參數唯讀):

 
  1. sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=10000000 --max-requests=0 --num-threads=100  
  2. --oltp-read-only=on --mysql-host=192.168.110.121  --mysql-port=3306 --mysql-user=admin --mysql-password=123456 --mysql-db=test 
  3.  --oltp-table-name=sbtest --mysql-socket=/tmp/mysql.sock run 

sbtest表1億條記錄,檔案大小24G。

下面是16K和8K效能圖:

650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131229/192F55228-5.jpg" alt="" />

650) this.width=650;" border="0" src="http://www.bkjia.com/uploads/allimg/131229/192F51296-6.jpg" alt="" />

 
  1. 結論:左邊是16K,右邊為8K,所看,差別不是明顯。 
  2.  
  3. 所以,針對讀寫很頻繁,16K目前是效能比較好的。 

 

本文出自 “賀春暘的技術專欄” 部落格,請務必保留此出處http://hcymysql.blog.51cto.com/5223301/992810

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.