mysql憂化參數

轉自 https://blog.51cto.com/tongcheng/1710265
如下參數是在mysql-5.6.27中使用,可能mysql版本不一樣使用方法不同
1.線程參數
innodb_read_io_threads=6 --innodb存儲引擎讀線程數,供客戶端讀取數據,默認值是4
innodb_read_io_threads=7 --innodb存儲引擎寫線程數,供客戶端寫入數據,默認值是4
innodb_purge_threads=2 --innodb存儲引擎回收purge頁線程,清空髒數據,默認值是1
innodb_lru_scan_depth=1024 --控制LRU的可用頁的數量,默認值是1024
innodb_max_dirty_pages_pct=75 --innodb緩衝池中的髒頁大於75%時,checkpoint將一部分的髒頁強制刷新到磁盤,通常是100個髒頁
innodb_io_capacity=200 --磁盤IO在吞吐量,當數據量很大時默認刷新100個髒頁,合併20個插入緩衝時可能忙不過來,此值能夠刷新200個髒頁,合併200 X 5%=100個插入緩衝,默認值是200
innodb_adaptive_flushing=on --自動刷新髒頁,當innodb_max_dirty_pages_pct值小於75時也能夠刷新髒頁
innodb_purge_batch_size=300 --每次回收undo頁的數量,默認值是300個頁
innodb_max_purge_lag = 0 --控制history list的長度,history list是根據事物提交的順序將undo log進行連接。
binlog_max_flush_queue_time = 0 --用來控制Flush階段中的等待時間,也就是事物與事物之間的等待時間。
innodb_change_buffering=all --插入緩衝只緩衝哪些語句,選項值有inserts,updates,deletes,purges,all,none等.none表示都不進行緩衝,all表示都進行緩衝.默認值是all
innodb_change_buffer_max_size=25 --插入緩衝大小佔整個緩衝池的25%內存大小,最大值是50
innodb_adaptive_hash_index=on --啓用自適應哈稀索引(AHI),哈稀索引是一次讀取數據,只能等值使用
innodb_page_size=16KB --innodb存儲引擎默認頁(塊)是16KB,能夠本身調整,默認區大小是1M
innodb_file_format=Antelope --字段的文件格式(文件格式有Compact,Redudant,Antelope,Compressed,Dynamic)
innodb_file_format_check=ON --檢查字段是否支持的文件格式
lower_case_table_names=1 --mysql數據庫對錶名是否區分大小寫,1 表示不區分大小寫,0 表示區分大小寫
auto-rehash --命令補全功能,只補全庫名,表名,字段名.(是mysql客房端參數,定義在[mysql]下面)
foreign_key_checks=0 --關閉外鍵檢查,關閉後導入導出數據的時間變快
old_alter_table=off --建立和刪除索引的算法,COPY 表示建立臨時表,INPLACE 不須要建立臨時表,off默認是INPLACE
innodb_online_alter_log_max_size=128M --記錄在建立和刪除索引時,將DML語句寫入緩存日誌,若是有大量的寫事物可調大參數
innodb_stats_sample_pages=8 --統計Caridinality(索引散列)時每次採樣頁的數量,默認值是8
innodb_stats_method=nulls_equal --如何對待索引頁的null值記錄,nulls_equal NULL視爲相等的記錄,nulls_unequal NULL視爲相等記錄或NULL忽略記錄,nulls_ignored 忽略null值記錄.
innodb_stats_persistent=ON --是否將命令aalyze table計算到的Cardinality值存放到磁盤上
innodb_stats_on_metadata=OFF --命令show table status和show index是否從新須要計算索引到Cardinality值
innodb_stats_persistent_sample_pages=20 --命令analyze table更新Cardinality值時每次採樣頁的數量,默認值是20
innodb_stats_transient_sample_pages=8 --每次採樣的數量,默認值是8
innodb_ft_aux_table=test/fts_a --將test庫fts_a表的全文索引信息記錄到表中,表名information_schema.INNODB_FT_INDEX_TABLE記錄分詞信息
innodb_ft_cache_size=31M --全文索引緩存的大小,默認是32M
innodb_optimize_fulltext_only=ON --啓用全文索引憂化,刪除多餘的文檔
innodb_ft_num_word_optimize=2000 --每次刪除分的數量,默認是2000
innodb_ft_enable_stopword=ON --啓用不須要分詞的參數
innodb_ft_server_stopword_table=test/fts_a --對不須要分詞的word寫入列表中,對應的分詞在information_scema.INNODB_FT_DEFAULT_STOPWORD表中
innodb_ft_min_token_size=3 --分詞word中最小的長度,默認是3
innodb_ft_max_token_size=84 --分詞word中最大的長度,默認是84
innodb_autoinc_lock_mode=1 --控制自增加模式,默認值是1
innodb_lock_wait_timeout=50 --鎖等待默認是50秒(適用於innodb存儲引擎)
innodb_rollback_on_timeout=off --鎖表後數據是否回滾,默認不回滾
table_lock_wait_timeout=50 --表鎖等待(myisam存儲引擎)
slave-skip-errors=錯誤值 --在主從有錯誤時能夠跳過指定的錯誤代碼值mysql

2.緩衝池參數
innodb_buffer_pool_size=2G --innodb存儲引擎緩衝池包括數據頁,索引頁,插入緩衝,自適應哈稀索引,數據字典,鎖信息.myisam只緩存索引文件.默認值134217728字節(128M).
innodb_buffer_pool_instances=8 --innodb的緩衝池個數,與innodb_buffer_pool_size配合使用
innodb_old_blocks_pct=37 --使用LRU(最近最少算法)算法計算緩衝池,緩衝池前面63%爲最活躍數據,63%之後爲歷史數據,最活躍數據命中率高.
innodb_old_blocks_time=100 --數據被讀後100s才加入到最活躍緩衝池中
innodb_log_buffer_size=8M --重作日誌緩衝大小,不宜設置太大,master thread是每秒同步到磁盤,事物提交同步到磁盤,重作日誌空間剩餘1/2也同步到磁盤,默認爲8M
innodb_use_native_aio=on --開啓異步io,默認是開啓
innodb_flush_neighbors=1 --開啓刷新鄰近接頁,刷新相鄰的髒頁,默認開啓算法

3.數據恢復
innodb_fast_shutdown=1 --0表示關閉mysql時完成全部的full purge和merge insterbuffer操做.1表示將緩衝池刷新到磁盤,2表示將全部操做寫入日誌,下次啓動時進行恢復
innodb_force_recover=1 --1表示忽略檢查corrupt頁,將全部髒頁同步到磁盤,2表示阻止主線程運行,3表示不執行事物回滾操做,4表示不執行緩衝插入操做,5表示不查看重作日誌,6表示不執行前滾操做
innodb_undo_directory = . --回滾段存放的目錄
innodb_undo_logs = 128 --回滾段的數量
innodb_undo_tablespaces = 0 --構成回滾段的文件數量
completion_type=NO_CHAIN --不使用鏈事物(0 commit與commit work是等價的,1 commit work與commit and chain是等價的,事物提交後自動啓動相同隔離級別的事物.2 commit work與commit and release等價,事物提交後自動斷開服務器)sql

4.日誌
slow_query_log=on --開啓慢查詢日誌,記錄查詢較慢的sql語句
slow_query_log_file='文件路徑' --存放慢查詢文件的路徑
long_query_time=2 --慢查詢的時間,默認是10秒
log_queries_not_using_indexes=off --記錄在查詢中沒有使用索引的查詢,默認不使用索引
log_throttle_queries_not_using_indexes=0 --記錄多少行慢查詢,0表示無限制
log_output=FILE --指定慢查詢日誌輸出是文件仍是表(TABLE)
log_bin=master_bin.log --開啓二進制日誌
log_bin_index=master_index.log --指定二進日誌文件的索引文件
max_binlog_size=1G --每一個二進日誌的大小,默認值是1G
binlog_cache_size=8MB --二進日誌緩存,默認大小32KB
max_binlog_cache_size=128MB --最大二進制日誌緩存(show status like'%Binlog_cache_use%' 使用緩存寫二進的次數,show status like'%Binlog_cache_disk_use%' 使用臨時文件寫二進日誌的次數)
sync_binlog=1 --事物提交同步到磁盤
binlog_do_db=數據庫 --須要同步的數據庫(指定數據庫寫入二進日誌)
binlog-ignore-db=數據庫 --不須要同步的數據庫(忽略數據庫寫入二進日誌)
binlog_format=STATEMENT --二進制日誌輸出格式,默認是語句模式,還有混合模式(MITEX)和行模式(ROW)
binlog_max_flush_queue_time=0 --控制Flush階段中等待的時間,默認是0
innodb_support_xa=ON --分佈式事務,若是事物未提交發生宕機事物進行回滾
log_slave_updates=ON --將主數據庫的二進日誌同步到從數據庫的二進制日誌中
innodb_log_file_size=2G --重作日誌文件的大小,默認4GB
innodb_log_files_in_group=3 --重作日誌文件組的數量,默認是2
innodb_mirrored_log_groups=1 --重作日誌文件的鏡像,默認值是1,表示沒有鏡像
innodb_log_group_home_dir=./ --重作日誌文件的路徑,./表示在數據目錄下
innodb_flush_log_at_trx_commit=1 --事物提交時將重作日誌寫入到磁盤,0 表示事物提交時不將重作日誌寫入到磁盤,等master線程每秒刷新,2表示將重作日誌異步到磁盤
completion_type=0 --值是0表示事物提交進行下一個事物,值是1就是鏈事物,當一個事物完成性必須提交,值是2就是事物提交自動會斷開與服務器的鏈接.數據庫

4.mysql 5.6新特性
slave_parallel_workers = 4 --開啓並行複製,減小複製的延遲,增長slave快速讀取中繼日誌的內容
gtid_mode = on --從 5.6 開始mysql 增長了gtid(Global Transaction Identifiers),開啓了這個參數,就在change master to 的時候就無需再指定 MASTER_LOG_FILE 和 MASTER_LOG_POS,而只須要增長auto_master_postition =1 就好了,如開啓這個參數須要相應增長--log-slave-updates --enforce-gtid-consistency 這2個參數
延時複製方案:
若是你想slave 延時複製的話,能夠把slave 停掉以後,用命令 change master to master_delay=n n 爲你想要延時的時間緩存

5.二次寫(doublewrite由兩部分組成,一部分是內存中的doublewrite buffer,大小爲2MB,另外一部分是物理磁盤上的共享表空間連續的128個頁,大小也是2MB)
mysql> show global status like '%innodb_db%';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Innodb_dblwr_pages_written | 1 | --一共寫了多少個頁
| Innodb_dblwr_writes | 1 | --寫了多少個頁,若是(總數:寫入)小於64:1證實寫入負載不大
+----------------------------+-------+
2 rows in set (0.00 sec)
mysql> 服務器

相關文章
相關標籤/搜索