可以改善mysql效能的InnoDB配置引數

2021-07-24 22:47:02 字數 2803 閱讀 9351

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表時推薦此設定

MySQL 《必知必會》 改善效能

建議將mysql執行在自己專用伺服器上 mysql的預設值可以調整 比如記憶體分配,緩衝區大小 mysql是乙個多執行緒的dbms,經常同時執行多個任務,可能會被其中乙個執行緩慢的任務影響,使用 show processlist 顯示活動程序來分析,使用kill殺死程序 select語句的多種嘗試 ...

Julia改善效能的若干建議

julia是一門隨便寫寫就有不錯的效率的語言。但高效能和靈活性通常是矛盾的,julia也不例外。當你想盡量榨取julia的效能時,除了閱讀官方文件的建議外,也可以看看本文總結的幾條經驗之談。這些都是我最近編寫cfd程式時踩過的坑。有些你可能已經熟悉了,僅供參考。julia a ones float6...

mysql的效能優化 mysql效能優化

檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...