從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參數:
- innodb_buffer_pool_size = 48G
- innodb_buffer_pool_instances = 8
- innodb_flush_method = O_DIRECT
- innodb_file_per_table = 1
- innodb_read_io_threads = 16
- innodb_write_io_threads = 16
- innodb_io_capacity = 2000
- innodb_log_files_in_group = 3
- innodb_flush_log_at_trx_commit = 0
- innodb_log_file_size = 1024M
- innodb_max_dirty_pages_pct = 90
1.Sysbench參數讀寫):
- sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=100000000 --max-requests=1000000 --num-threads=100
- --mysql-host=192.168.110.121 --mysql-port=3306 --mysql-user=admin --mysql-password=123456 --mysql-db=test
- --oltp-table-name=sbtest --mysql-socket=/tmp/mysql.sock run
sbtest表1億條記錄,檔案大小24G。
下面是16K效能圖:
- 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效能圖:
- 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="" />
- 結論:預設頁16K,對CPU壓力較小,平均在20%
- 8K頁,CPU壓力為30%~40%,但select輸送量要高於16K
2.Sysbench參數唯讀):
- sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=10000000 --max-requests=0 --num-threads=100
- --oltp-read-only=on --mysql-host=192.168.110.121 --mysql-port=3306 --mysql-user=admin --mysql-password=123456 --mysql-db=test
- --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="" />
- 結論:左邊是16K,右邊為8K,所看,差別不是明顯。
-
- 所以,針對讀寫很頻繁,16K目前是效能比較好的。
本文出自 “賀春暘的技術專欄” 部落格,請務必保留此出處http://hcymysql.blog.51cto.com/5223301/992810