MySQL學習筆記(2):配置和狀態

来源:https://www.cnblogs.com/garvenc/archive/2020/06/17/mysql_learning_2_config_variable_status.html
-Advertisement-
Play Games

本文更新於2020-05-30,使用MySQL 5.7,操作系統為Deepin 15.4。 配置文件 Windows下配置文件的讀取順序: %WINDIR%/my.ini C:/my.cnf INSTALL_DIR/my.ini,INSTALL_DIR為實際的安裝目錄 --defaults-extr ...


本文更新於2020-05-30,使用MySQL 5.7,操作系統為Deepin 15.4。

配置文件

Windows下配置文件的讀取順序:

  1. %WINDIR%/my.ini
  2. C:/my.cnf
  3. INSTALL_DIR/my.ini,INSTALL_DIR為實際的安裝目錄
  4. --defaults-extra-file=xxx指定的文件

Linux下配置文件的讀取順序:

  1. /etc/my.cnf
  2. INSTALL_DIR/my.cnf,INSTALL_DIR為實際的安裝目錄
  3. --defaults-extra-file=xxx指定的文件
  4. ~/.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索引緩存區的大小。可使用.key_buffer_size使用多索引緩存機制
--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 伺服器工作時長

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 哨兵作用 哨兵(sentinel) 是一個分散式系統,是程式高可用性的一個保障。用於監視任意多個主伺服器,以及這些主伺服器屬下的所有從伺服器,當出現故障時通過投票機制選擇新的master並將所有slave連接到新的master。 監控 不斷地檢查master和slave是否正常運行 master存活 ...
  • 學習電子書:https://docs.oracle.com/cd/E18283_01/server.112/e16508/consist.htm#CNCPT1339 什麼是排它鎖? 每一個事務在修改資源時會獲得排他鎖,該事務不結束,則其他事務不能修改此資源。(註意:這裡的修改不是數據“增刪查改”中的 ...
  • 1.Sql Server2008的下載 近期項目使用到C#,為了學習.NET相關的技術,開始著手學習Sql Server資料庫。 Sql Server2008是比較經典的資料庫版本,這裡簡單寫一下Sql Server 2008的下載與安裝。 下載地址在微軟官網上:https://www.micros ...
  • 在項目有個需求要保存一個字元串到redis,並設置一個過期時間。這個需求一看非常簡單,使用redisTemplate一行代碼搞定,代碼如下 redisTemplate.opsForValue().set("userKey", data, 10000); 但保存後,查看redis發現value的首碼多 ...
  • 如何在 web 應用中使用資料庫 隨著雲時代的到來,雲開發有著獨特的優勢相對於傳統開發,從資料庫而言,cloudbase 提供的雲資料庫真的很方便,本文就以一個簡單的 todolist 小例子來講解一下如何在 web 應用中使用雲開發資料庫 構建簡單的界面 下麵的這個 todolist 只要包括的功 ...
  • 一、試用SQL查詢語句表達下列對教學資料庫中三個基本表 S、SC 、C 的查詢: S(sno,sname,SAGE,SSEX) 各欄位表示學號,姓名,年齡,性別 Sc(sno,cno,grade) 各欄位表示學號,課程號,成績、 C(cno,cname, TEACHER) 各欄位表示課程號,課程名和 ...
  • elasticsearch集群配置(PreviewVersion) 準備 首先需要在每個節點有可以正常啟動的單節點elasticsearch elasticsearch集群配置僅需要在elasticsearch.yml添加相應配置 vim /YouPath/elasticsearch-5.1.2/c ...
  • --資料庫清單 SELECT * FROM Master..SysDatabases ORDER BY Name; --伺服器級用戶許可權 WITH CTE AS ( SELECT u.name AS UserName, u.is_disabled AS IsDisabled, g.name as s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...