MySQL效能優化

2021-06-16 11:34:11 字數 2409 閱讀 2756

我的日常工作也經常接觸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效能優化

優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...

mysql的效能優化 mysql效能優化

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

mysql 效能優化 命令 mysql效能優化

發現問題 當發現程式執行比較慢的時候,首先排除物力資源問題之後,就將注意力轉向mysq資料庫 1 首先確定執行慢的sql語句 mysql show full processlist 2 確認低效的查詢 多次執行第一步發現time耗費大的sql語句。檢視耗費的時間。3 分析效能 為sql生成乙個執行計...