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
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...