1. innodb_lock_wait_timeout mysql 可以自動監測行鎖導致的死鎖併進行相應的處理,但是對於表鎖導致的死鎖不能自動監測,所以該參數主要用於,出現類似情況的時候等待指定的時間後回滾。系統預設值是50秒。用戶可以根據業務自行設置。生產環境不推薦使用過大的 innodb_loc ...
1. innodb_lock_wait_timeout
mysql 可以自動監測行鎖導致的死鎖併進行相應的處理,但是對於表鎖導致的死鎖不能自動監測,所以該參數主要用於,出現類似情況的時候等待指定的時間後回滾。系統預設值是50秒。用戶可以根據業務自行設置。生產環境不推薦使用過大的 innodb_lock_wait_timeout 參數值。
-- 查看事務超時時間 SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';
也可以對當前會話進行超時設置如: set innodb_lock_wait_timeout=1000。關於產生死鎖的原因,如何查看分析死鎖問題, 如何優化儘量避免死鎖,請查看"mysql 開發進階篇 鎖問題系列"。
2. innodb_support_xa
通過該參數設置,是否支持分散式事務。預設值是ON或者1,表示支持分散式事務。
分佈事事務分兩類:
(1)是外部xa事務(支持多實例分散式事務)。
(2)是支持內部xa事務(支持binlog和redo_log之間數據一致性)。
如果關閉這個參數,據前輩們說可能會影響到:1是主從複製binlog與redo_log不一致,2是binlog與redo_log事務順序不一致性。
-- 查看是否支持分散式事務 SHOW VARIABLES LIKE 'innodb_support_xa';
3. innodb _log_buffer_size
這個參數是指日誌緩存的大小。預設的設置在中等強度寫入負載以及較短事務的情況下,一般都可以滿足伺服器的性能要求。如果存在更新操作峰值或者負載較大,就應該考慮加大它的值。 如果值設置太高,可能會浪費記憶體,因為它每秒都會刷新一次,因此無需設置超過1秒所需的記憶體空間(理解是每1秒刷新後,日誌緩存會清空)。通常設置為8~16MB就足夠了。系統預設是16M。
-- 查看日誌緩存空間大小 SHOW VARIABLES LIKE 'innodb_log_buffer_size';
16777216.0/1024.0/1024.0=16M
4. innodb_log_file_size
這個參數是一個日誌組(log group)中每個日誌文件的大小,也叫事務日誌文件大小。此參數在高寫入負載尤其是大數據集的情況下很重要.這個值越大則性能相對越高,但副作用是當系統發生災難時恢復時間會加大。系統預設是48M。
(1) 小日誌文件使寫入速度更慢,崩潰恢復速度更快。原因是由於事務日誌相當於一個寫緩衝,而小日誌文件會很快的被寫滿,這時候就需要頻繁地刷新到硬碟,速度就慢了。如果產生大量的寫操作,會增加checkpoint寫的次數,如果不能足夠快地刷新數據,那麼寫性能將會降低,。相反文件空間大,在刷新操作發生之前給你足夠的空間來使用。
(2) 大日誌文件使寫入更快,崩潰恢復速度更慢。
-- 查看每個日誌文件的大小 SHOW VARIABLES LIKE 'innodb_log_file_size';
268435456.0/1024.0/1024.0=256M
5. innodb_log_compressed_pages
這個參數是指:日誌文件頁存儲壓縮。系統預設是ON , 將減少redo log的寫入量。
6. innodb_log_checksums
這個參數是指:寫入redo log到文件之前,redo log的每一個block都需要加上checksum校驗位,以防止apply損壞redo log。
7. innodb_log_write_ahead_size
這個參數是指: redo log寫前的塊大小。系統預設是8192位元組。
8. innodb_log_files_in_group
這個參數是指:該變數控制日誌文件數。預設值為3。日誌是以順序的方式寫入。結合innodb_buffer_pool_size設置其大小。一般不用設置。
9. innodb_log_group_home_dir
這個參數是指:日誌組所在的路徑。
-- 所有日誌參數如下 SHOW VARIABLES LIKE 'innodb_log%';