本文更新于2020-05-30,使用MySQL 5.7,作業系統為Deepin 15.4,
組態檔
Windows下組態檔的讀取順序:
- %WINDIR%/my.ini
- C:/my.cnf
- INSTALL_DIR/my.ini,INSTALL_DIR為實際的安裝目錄
- --defaults-extra-file=xxx指定的檔案
Linux下組態檔的讀取順序:
- /etc/my.cnf
- INSTALL_DIR/my.cnf,INSTALL_DIR為實際的安裝目錄
- --defaults-extra-file=xxx指定的檔案
- ~/.my.cnf
組態檔內容分為多個組:
- [mysql]:配置mysql客戶端工具,如default-character-set可配置默認客戶端、連接、回傳結果字符集,
- [mysqld]:配置mysqld服務器,
- [mysqldump]:配置mysqldump工具,
系統變數
關于系統變數的詳情參閱官方檔案:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html,
關于InnoDB系統變數的詳情參閱官方檔案:https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html,
MySQL服務器可使用以下方式配置,各種方式的引數名相似:
- 系統變數:可使用
SHOW VARIABLES [LIKE 'name']或SELECT @@name查看,使用SET [GLOBAL|SESSION] [@@]name = value設定,引數名使用“_”分隔單詞, - 命令列引數:即mysqld的命令列引數,引數名加上“--”前綴,使用“-”分隔單詞,可通過
mysqld --help --verbose可查看命令列引數的使用及從當前配置讀取的系統變數值, - 組態檔:組態檔的[mysqld]組,引數名使用“-”或“_”分隔單詞,
引數值如為布爾型別,設定為0、OFF為假,1、ON為真,命令列引數和組態檔,不指定值時表示真,
| 系統變數 | 命令列引數 | 組態檔 | 說明 |
|---|---|---|---|
| autocommit | 是否自動提交事務 | ||
| back_log | TCP監聽埠新連接的等待佇列大小 | ||
| --binlog-do-db= | 只有指定的庫才記錄二進制日志,可指定多次 | ||
| binlog_format | --binlog-format= | 二進制日志格式,,可為STATEMENT、ROW、MIXED | |
| --binlog-ignore-db= | 只有指定的庫才不記錄二進制日志,可指定多次 | ||
| bulk_insert_buffer_size | 每個執行緒MyISAM批量插入的快取區大小 | ||
| character_set_client | 客戶端字符集 | ||
| character_set_connection | 連接字符集,字串常量的字符集也由此指定 | ||
| character_set_database | 默認庫的字符集 | ||
| character_set_results | 回傳給客戶端的結果字符集 | ||
| character_set_server | 服務器字符集 | ||
| collation_database | 默認庫的字符集校對規則 | ||
| collation_server | 服務器字符集校對規則 | ||
| concurrent_insert | MyISAM表并發插入規則,NEVER或0不允許并發插入;AUTO或1當MyISAM表沒有空洞時,允許一個執行緒讀表的同時另一個執行緒從表尾插入;ALWAYS或2無論表有無空洞,都允許在表尾并發插入 | ||
| datadir | 資料目錄,默認為/var/lib/mysql/ | ||
| end_markers_in_json | 設定trace分析優化器以JSON格式輸出 | ||
| event_scheduler | 是否打開事件調度器 | ||
| expire_logs_days | --expire-logs-days= | 二進制日志過期天數 | |
| foreign_key_checks | 是否進行外鍵檢查 | ||
| --general-log | 是否啟用查詢日志 | ||
| --general-log-file= | 查詢日志檔案名,默認為“主機名.log”,默認保存在datadir指定的目錄中 | ||
| have_query_cache | 服務器在安裝時是否已經配置高速快取 | ||
| init_file | 服務器啟動后執行的SQL檔案 | ||
| innodb_buffer_pool_instances | InnoDB快取池實體數,每個實體平分快取池的大小 | ||
| innodb_buffer_pool_size | InnoDB表資料和索引資料的最大快取池大小 | ||
| innodb_data_file_path | InnoDB共享表空間檔案,格式為file_name:file_size[:autoextend[:max:max_file_size]],可以“;”分隔 | ||
| innodb_data_home_dir | InnoDB共享表空間目錄 | ||
| innodb_doublewrite | InnoDB是否開啟雙寫策略 | ||
| innodb_file_per_table | InnoDB是否使用多表空間的存盤方式 | ||
| innodb_flush_log_at_trx_commit | InnoDB事務提交時重繪日志的規則,0在事務提交時,不會立即將快取中的redo日志寫到磁盤檔案,而是每秒觸發一次,并呼叫作業系統fsync重繪IO快取,若資料庫崩潰,資料就會丟失;1在事務提交時,立即將快取中的redo日志回寫到磁盤檔案,并呼叫作業系統fsync重繪IO快取;2在事務提交時,立即將快取中的redo日志回寫到磁盤檔案,但并不馬上呼叫fsync重繪IO快取,而是每秒觸發一次,若資料庫崩潰,只要作業系統沒有崩潰,資料就不會丟失 | ||
| innodb_io_capacity | InnoDB后臺任務每秒的IO次數,包括重繪快取池臟頁等 | ||
| innodb_lock_wait_timeout | InnoDB事務等待行鎖的超時時間 | ||
| innodb_locks_unsafe_for_binlog | InnoDB是否在執行INSERT INTO ... SELECT ...和CREATE TABLE ... SELECT ...時對源表記錄加鎖,如否則可能無法使用binlog正確恢復或復制資料 |
||
| innodb_log_buffer_size | InnoDB日志快取池大小 | ||
| innodb_log_file_size | InnoDB日志檔案大小 | ||
| innodb_lru_scan_depth | InnoDB快取池無可用資料頁時掃描LRU list尾部資料頁的個數,其后進行相關磁盤重繪操作,淘汰的頁放入free list中 | ||
| innodb_max_dirty_pages_pct | InnoDB快取池中臟頁的最大比例 | ||
| innodb_old_blocks_pct | InnoDB快取池LRU list中old sublist的比例 | ||
| innodb_old_blocks_time | InnoDB快取池LRU list中資料塊從old sublist轉移到new sublist的毫秒數 | ||
| innodb_table_locks | InnoDB能否感知MySQL Server加的表級鎖,同時MySQL Server能否感知InnoDB加的行級鎖,能感知才能自動識別涉及表級鎖的死鎖 | ||
| join_buffer_size | 每個執行緒的表連接快取區大小 | ||
| key_cache_age_threshold | MyISAM索引快取塊由hot子表向warm子表降級的時間,對于有N個塊的索引快取來說,如果一個在hot子表頭部的索引塊在最后N*key_cache_age_threshold/100次快取命中未被訪問過,就會被降級到warm子表 | ||
| key_cache_block_size | MyISAM索引快取塊大小 | ||
| key_cache_division_limit | MyISAM索引快取用做warm子表的比例,默認值為100,亦即不啟用中點插入策略 | ||
| key_buffer_size | MyISAM索引快取區的大小,可使用 |
||
| --local-infile | 是否允許LOAD DATA LOCAL INFILE從客戶端本地讀取檔案 |
||
| log_bin | --log-bin[=] | 是否開啟二進制日志,命令列引數可指定檔案名,,默認為“主機名-bin”,默認保存在datadir指定的目錄中 | |
| log_bin_basename | 二進制日志檔案名(不帶目錄,實際檔案名會追加形如.000001的編號) | ||
| log_bin_index | 二進制日志檔案的索引檔案 | ||
| log_error | --log-error[=] | 錯誤日志檔案名,默認為“主機名.err”,默認保存在datadir指定的目錄中 | |
| --log-output= | 查詢日志和慢查詢日志的保存方式,NONE不保存,其優先級最高;TABLE保存至表,查詢日志保存至mysql庫general_log表,慢查詢日志保存至msql庫slow_log表;FILE保存至檔案,為默認值,可使用“,”分隔 | ||
| --log-queries-not-using-indexes | 是否將不使用索引的查詢寫入慢查詢日志 | ||
| --log-slave-updates | 從庫是否寫二進制日志,如果從庫同時也作為主庫,則需打開這個選項,還需指定--log-bin | ||
| --log-slow-admin-statements | 是否將執行慢的管理陳述句寫入慢查詢日志 | ||
| long_query_time | 執行時間(不計入獲得鎖的時間)超過該值的查詢將寫入慢查詢日志 | ||
| low_priority_updates | 是否使MyISAM存盤引擎的寫請求比讀請求優先級更低 | ||
| lower_case_table_names | 表名大小寫規則,0磁盤存盤的表名區分大小寫,比較也區分大小寫,Linux的默認值;1磁盤存盤的表名為小寫,比較不區分大小寫,Windows的默認值;2磁盤存盤的表名區分大小寫,比較不區分大小寫,Mac的默認值 | ||
| --master-connect-retry= | 從庫在與主庫的連接丟失時重試的時間間隔 | ||
| max_connections | MySQL資料庫的最大連接數 | ||
| max_heap_table_size | Memory存盤引擎最大的表大小 | ||
| max_length_for_sort_data | 對filesort,如查詢到的欄位總大小小于該值,則使用一次掃描演算法,否則使用兩次掃描演算法 | ||
| max_write_lock_count | 表級鎖獲取寫鎖的最大次數,此后會允許獲取一次讀鎖 | ||
| min_examined_row_limit | 掃描記錄數不少于該值的查詢將寫入慢查詢日志 | ||
| open_files_limit | 打開的檔案描述符最大數量 | ||
| optimizer_trace | 優化器trace設定 | ||
| optimizer_trace_max_size | 化器trace使用的最大記憶體大小 | ||
| profiling | 是否打開profiling | ||
| query_cahce_size | 查詢快取大小 | ||
| query_cache_type | 查詢快取使用規則,0或OFF關閉查詢快取;1或ON打開查詢快取(使用SQL_NO_CACHE除外);2或DEMAND只快取使用SQL_CACHE的查詢 | ||
| read_buffer_size | MyISAM表順序讀取的快取大小,為每個執行緒獨占 | ||
| --read-only | 從庫是否只接受root的更新操作 | ||
| read_rnd_buffer_size | MyISAM表隨機讀取的快取大小,為每個執行緒獨占 | ||
| --replicate-do-db= | 從庫復制的庫 | ||
| --replicate-do-table= | 從庫復制的表 | ||
| --replicate-ignore-db= | 從庫忽略復制的庫 | ||
| --replicate-ignore-table= | 從庫忽略復制的表 | ||
| --replicate-wild-go-table= | 以通配符方式指定從庫復制的表 | ||
| --replicate-wild-ignore-table= | 以通配符方式指定從庫忽略復制的表 | ||
| --safe-user-create | 是否不能用GRANT創建新用戶,除非用戶有mysql庫user表的INSERT權限 |
||
| --skip-grant-tables | 是否令服務器跳過權限系統的使用 | ||
| --skip-networking | 是否不允許TCP/IP連接,而必須使用命名管道、共享記憶體、UNIX套接字 | ||
| --skip-show-database | 是否有SHOW DATABASES權限的用戶才能執行且顯示所有庫名;否則所有用戶都能執行,但只顯示有權限的庫名 |
||
| --slave-skip-errors= | 復制程序中從庫可以自動跳過的錯誤號 | ||
| slow_query_log | --slow-query-log | 是否啟用慢查詢日志 | |
| slow_query_log_file | --slow-query-log-file[=] | 慢查詢日志檔案名,默認為“主機名-slow.log”,默認保存在datadir指定的目錄中 | |
| sort_buffer_size | 記憶體排序快取區大小,為每個執行緒獨占 | ||
| sql_log_bin | 是否寫入二進制日志,具有SUPER權限可禁止將自己的陳述句寫入二進制日志 | ||
| sql_log_off | 是否關閉查詢日志,只針對當前連接 | ||
| sql_mode | SQL Mode | ||
| --ssl | 是否支持SSL連接,如支持SSL,還需指定--ssl-ca、--ssl-cert、--ssl-key | ||
| sync_binlog | --sync-binlog= | 二進制日志快取重繪規則,0由檔案系統控制二進制日志快取的重繪,大于0表示每若干條二進制日志重繪檔案系統快取 | |
| table_open_cache | 打開并快取的所有表數量 | ||
| thread_cache_size | 快取可重用的執行緒數量 | ||
| tx_isolation | 事務隔離級別 | ||
| unique_checks | 是否開啟唯一性檢查 |
狀態變數
關于狀態變數的概要參閱官方檔案:https://dev.mysql.com/doc/refman/5.7/en/server-status-variable-reference.html,
關于狀態變數的詳情參閱官方檔案:https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html,
| 狀態變數 | 說明 |
|---|---|
| Com_commit | 事務提交的次數 |
| Com_delete | 執行DELETE的次數,不論提交還是回滾都會累加 |
| Com_insert | 執行INSERT的次數,不論提交還是回滾都會累加,對批量插入的操作只累加一 |
| Com_rollback | 事務回滾的次數 |
| Com_select | 執行SELECT的次數,不論提交還是回滾都會累加 |
| Com_update | 執行UPDATE的次數,不論提交還是回滾都會累加 |
| Connection_errors_max_connections | 因為超過資料庫最大連接數而被拒絕的連接數 |
| Connections | 連接服務器的歷史總次數 |
| Handler_read_key | 使用索引讀取的行數,越高表示索引越經常使用 |
| Handler_read_rnd_next | 在資料檔案讀下一行的次數,越高表示進行越多表掃描 |
| Innodb_buffer_pool_read_requests | 從InnoDB快取池讀取的次數 |
| Innodb_buffer_pool_reads | 從磁盤讀取到InnoDB快取池的次數 |
| Innodb_buffer_pool_wait_free | Innodb的IO執行緒從資料檔案中讀取了資料要寫入快取池的時候,需要等待空閑頁的次數 |
| InnoDB_row_lock_time_avg | InnoDB行鎖平均等待時間 |
| InnoDB_row_lock_waits | InnoDB航所等待次數 |
| Innodb_rows_deleted | InnoDB執行DELETE洗掉的行數 |
| Innodb_rows_inserted | InnoDB執行INSERT插入的行數 |
| Innodb_rows_read | InnoDB執行SELECT回傳的行數 |
| Innodb_rows_updated | InnoDB執行UPDATE更新的行數 |
| Key_blocks_unused | MyISAM未使用的索引快取塊數 |
| Key_read_requests | 從MyISAM索引快取區讀取的次數 |
| Key_reads | 從磁盤讀取至MyISAM索引快取區的次數 |
| Key_write_requests | 寫入至MyISAM索引快取區的次數 |
| Key_writes | 從MyISAM索引快取區寫入至磁盤的次數 |
| Open_tables | 打開并快取的表數量 |
| Qcache_free_blocks | 查詢快取的空閑記憶體塊數 |
| Qcache_free_memory | 查詢快取的空閑記憶體總數 |
| Qcache_hits | 查詢快取命中數 |
| Qcache_inserts | 被加入到查詢快取中的查詢數目 |
| Qcache_lowmem_prunes | 因缺少記憶體而被從查詢快取中洗掉的查詢數 |
| Qcache_not_cached | 沒有被查詢快取快取的查詢數 |
| Qcache_queries_in_cache | 查詢快取中已注冊的查詢數目 |
| Qcache_total_blocks | 查詢快取的總記憶體塊數 |
| Slow_queries | 慢查詢次數 |
| Sort_merge_passes | 排序演算法進行合并的次數 |
| Table_locks_immediate | 能夠立即獲得表級鎖的次數 |
| Table_locks_waited | 不能立即獲取表級鎖而需要等待的次數,越高表示表級鎖爭用越嚴重 |
| Threads_created | 為連接創建的執行緒數量 |
| Uptime | 服務器作業時長 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26177.html
標籤:MySQL
上一篇:Mysql基礎
