可以改善mysql性能的InnoDB配置参数
生活随笔
收集整理的這篇文章主要介紹了
可以改善mysql性能的InnoDB配置参数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
來源:http://www.jb51.net/article/27069.htm
MySQL與MSSQL 有一個區別在于MySQL建表的時候需要選擇存儲引擎,常用的存儲引擎有MyISAM和InnoDB 而由于InnoDB是一個健壯的事務型存儲引擎,已經有10多年的歷史,一些重量級的互聯網公司(Yahoo,Google Netease ,Taobao)也經常使用?我的日常工作也經常接觸InnoDB,現在就InnoDB一部分可以改善性能的參數列舉?
1. innodb_additional_mem_pool_size?
除了緩存表數據和索引外,可以為操作所需的其他內部項分配緩存來提升InnoDB的性能。這些內存就可以通過此參數來分配。推薦此參數至少設置為2MB,實際上,是需要根據項目的InnoDB表的數目相應地增加?
2.innodb_data_pool_size?
此參數類似于MySQL的key_buffer參數,但特定用于InnoDB表.這個參數確定了要預留多少內存來緩存表數據和索引。與key_buffer一樣,更高的設置會提升性能,可以是服務器的內存70-80%?
3.innodb_data_file_path?
參數的名字和實際的用途有點出入,它不僅指定了所有InnoDB數據文件的路徑,還指定了初始大小分配,最大分配以及超出起始分配界線時是否應當增加文件的大小。此參數的一般格式如下:?
path-to-datafile:size-allocation[:autoextend[:max-size-allocation]]?
例如,假設希望創建一個數據文件sales,初始大小為100MB,并希望在每次達到當前大小限制時,自動增加8MB(8MB是指定autoextend時的默認擴展大小).但是,不希望此文件超過1GB,可以使用如下配置:?
innodb_data_home_dir =?
innodb_data_file_path = /data/sales:100M:autoextend:8M: max:1GB?
如果此文件增加到預定的1G的限制,可以再增加另外一個數據文件,如下:?
innodb_data_file_path = /data/sales:100M:autoextend:8M: max:1GB;innodb_data_file_path = /data2/sales2:100M:autoextend:8M: max:2GB?
要注意的是,在這些示例中,inndb_data_home_dir參數開始設置為空,因為最終數據文件位于單獨的位置(/data/和/data2/).如果希望所有 InnoDB數據文件都位于相同的位置,就可以使用innodb_data_home_dir來指定共同位置,然后在通過 inndo_data_file_path來指定文件名即可。如果沒有定義這些值,將在datadir中創建一個sales。?
4 innodb_data_home_dir?
此參數指定創建InnoDB表空間的路徑的公共部分,默認情況下,這是MySQL的默認數據,由MySQL參數datadir指定?
5. innodb_file_io_threads?
此參數指定InnoDB表可用的文件I/O線程數,MySQL開發人員建議在非Windows平臺中這個參數設置為4?
6. innodb_flush_log_at_trx_commit?
如果將此參數設置為1,將在每次提交事務后將日志寫入磁盤。為提供性能,可以設置為0或2,但要承擔在發生故障時丟失數據的風險。設置為0表示事務日志寫入日志文件,而日志文件每秒刷新到磁盤一次。設置為2表示事務日志將在提交時寫入日志,但日志文件每次刷新到磁盤一次。?
7.innodb_log_archive?
因為MySQL目前使用自己的日志文件恢復InnoDB表,此參數可設置為0?
8.innodb_log_arch_dir?
MySQL目前忽略此參數,但會在未來的版本中使用。目前,應當將其設置為與innodb_log_group_home_dir相同的值?
9.innodb_log_buffer_size?
此參數確定些日志文件所用的內存大小,以M為單位。緩沖區更大能提高性能,但意外的故障將會丟失數據.MySQL開發人員建議設置為1-8M之間?
10. innodb_log_file_size?
此參數確定數據日志文件的大小,以M為單位,更大的設置可以提高性能,但也會增加恢復故障數據庫所需的時間?
11.innodb_log_files_in_group?
為提高性能,MySQL可以以循環方式將日志文件寫到多個文件。推薦設置為3M?
12. innodb_log_group_home_dir?
此參數確定日志文件組中的文件的位置,日志組中文件的個數由innodb_log_files_in_group確定,此位置設置默認為MySQL的datadir?
13.innodb_lock_wait_timeout?
InnoDB 有其內置的死鎖檢測機制,能導致未完成的事務回滾。但是,如果結合InnoDB使用MyISAM的lock tables 語句或第三方事務引擎,則InnoDB無法識別死鎖。為消除這種可能性,可以將innodb_lock_wait_timeout設置為一個整數值,指示 MySQL在允許其他事務修改那些最終受事務回滾的數據之前要等待多長時間(秒數)?
14.skip-innodb?
啟用此參數能防止夾雜InnoDB表驅動程序,不使用InnoDB表時推薦此設置
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的可以改善mysql性能的InnoDB配置参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 麈怎么读(邝怎么读)
- 下一篇: MySQL重要概念图解(重要)