聊聊MySQL中的參數(shù)
前言:
在前面一些文章中,經(jīng)常能看到介紹某某參數(shù)的作用,可能有些小伙伴仍搞不清楚 MySQL 參數(shù)是啥。本篇文章我們來聊聊 MySQL 參數(shù),學習下如何管理維護 MySQL 參數(shù)。
1.MySQL參數(shù)概念
我們所說的參數(shù)在官方文檔中稱為 系統(tǒng)變量(system variable),不同的變量有著不同的作用。MySQL 服務端維護了許多表示其配置的系統(tǒng)變量,所有變量均有默認值。一般可以在啟動命令行中或配置文件中對它們進行設置。
系統(tǒng)變量分為全局系統(tǒng)變量(global)和會話系統(tǒng)變量(session)。有些變量既有全局變量又有會話變量,有些變量只有全局變量。全局變量影響服務器的全局操作,會話變量只影響具體客戶端連接相關操作。若會話變量未單獨設置,則繼承自相應全局變量。
MySQL 服務啟動時,會按照配置文件或命令行中指定的選項來給全局變量賦值,沒有指定則按默認值處理。服務啟動后,通過連接服務器并執(zhí)行 SET GLOBAL var_name 語句可以動態(tài)更改部分全局變量的值。要想更改全局變量,必須具有 SUPER 權限。MySQL 還為每個客戶端連接維護會話變量,連接時使用相應全局變量的當前值對客戶端會話變量進行初始化??蛻舳丝梢酝ㄟ^ SET SESSION var_name 語句來動態(tài)更改會話變量。設置會話變量不需要特殊權限,但會話變量只作用于當前連接。
2.參數(shù)查詢與變更示例
這里也要說明下,并不是所有的參數(shù)都可以動態(tài)修改,某些參數(shù)只能寫入配置文件然后重啟數(shù)據(jù)庫才能生效。下面我們來展示下 MySQL 參數(shù)的查詢與修改。
# 參數(shù)查詢 show global variables like 'var_name'; //查看全局系統(tǒng)變量的值,可使用%通配符 show session variables like 'var_name'; //查看會話系統(tǒng)變量的值 show variables like 'var_name'; //優(yōu)先返回會話系統(tǒng)變量,若會話系統(tǒng)變量不存在,則返回全局系統(tǒng)變量。 # 也可用select查詢某個特定參數(shù) select @@global.var_name; //全局系統(tǒng)變量 select @@session.var_name; //會話系統(tǒng)變量 select @@var_name; //優(yōu)先會話系統(tǒng)變量 # 查詢示例 mysql> show global variables like 'server_id'; +---------------+---------+ | Variable_name | Value | +---------------+---------+ | server_id | 1003306 | +---------------+---------+ 1 row in set (0.00 sec) mysql> show global variables like 'log_bin%'; +---------------------------------+-------------------------------+ | Variable_name | Value | +---------------------------------+-------------------------------+ | log_bin | ON | | log_bin_basename | /data/mysql/logs/binlog | | log_bin_index | /data/mysql/logs/binlog.index | | log_bin_trust_function_creators | ON | | log_bin_use_v1_row_events | OFF | +---------------------------------+-------------------------------+ 5 rows in set (0.00 sec) mysql> select @@server_id; +-------------+ | @@server_id | +-------------+ | 1003306 | +-------------+ 1 row in set (0.00 sec) # 動態(tài)修改參數(shù) set global var_name = value; set session var_name = value; set var_name = value; set @@global.var_name = value; set @@session.var_name = value; set @@var_name = value; # 參數(shù)修改示例 mysql> set global sort_buffer_size = 2097152; Query OK, 0 rows affected (0.00 sec) mysql> set session sort_buffer_size = 4194304; Query OK, 0 rows affected (0.00 sec) mysql> select @@global.sort_buffer_size,@@session.sort_buffer_size; +---------------------------+----------------------------+ | @@global.sort_buffer_size | @@session.sort_buffer_size | +---------------------------+----------------------------+ | 2097152 | 4194304 | +---------------------------+----------------------------+ 1 row in set (0.00 sec)
參數(shù)動態(tài)修改后,建議將其寫入配置文件。因為動態(tài)修改的參數(shù)在 MySQL 服務重啟后會失效,只有寫入配置文件才能夠重啟后仍有效。對于一些無法動態(tài)修改的參數(shù),我們只能通過修改配置文件,然后重啟來使之生效。這里所說的配置文件就是 my.cnf 文件了,Linux 系統(tǒng)一般在 /etc 目錄下;Windows 系統(tǒng)一般在 basedir 目錄下,名稱可命名為 my.ini 。大部分參數(shù)需要配置在 [mysqld] 下,一份簡單的配置文件示例如下:
vi /etc/my.cnf # 簡單模板如下: [mysqld] user = mysql datadir = /data/mysql/data socket = /data/mysql/tmp/mysql.sock pid-file = /data/mysql/tmp/mysqld.pid skip_name_resolve = 1 max_connections = 2000 lower_case_table_names = 1 log_timestamps=SYSTEM max_allowed_packet = 32M ...
MySQL 參數(shù)一般由 DBA 或運維來維護,可能有些同學對這些參數(shù)還比較陌生。建議在數(shù)據(jù)庫初始化時,根據(jù)服務器規(guī)格設置對應的數(shù)據(jù)庫參數(shù)。對于不清楚作用的參數(shù),建議保持默認值即可。關于更多參數(shù)相關的內容,可以參考官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/server-system-variable-reference.html
總結:
本篇文章詳細講述了 MySQL 參數(shù)相關概念及查詢更改方法,希望各位小伙伴能學到相關知識。
以上就是MySQL中的參數(shù)是什么的詳細內容,更多關于MySQL 參數(shù)的資料請關注腳本之家其它相關文章!
- Python連接mysql方法及常用參數(shù)
- MySQL8.0內存相關參數(shù)總結
- pyMySQL SQL語句傳參問題,單個參數(shù)或多個參數(shù)說明
- python mysql中in參數(shù)化說明
- Python MySQLdb 執(zhí)行sql語句時的參數(shù)傳遞方式
- Python MySQL 日期時間格式化作為參數(shù)的操作
- 在MySQL中自定義參數(shù)的使用詳解
- 詳解MySql存儲過程參數(shù)的入門使用
- Ubuntu中MySQL的參數(shù)文件my.cnf示例詳析
- MYSQL配置參數(shù)優(yōu)化詳解
- MySQL性能全面優(yōu)化方法參考,從CPU,文件系統(tǒng)選擇到mysql.cnf參數(shù)優(yōu)化
- MySQL 5.6下table_open_cache參數(shù)優(yōu)化合理配置詳解
相關文章
MySQL報錯cannot?add?foreign?key?constraint的問題解決方法
這篇文章主要介紹了MySQL報錯cannot?add?foreign?key?constraint的問題解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06SQL實現(xiàn)LeetCode(184.系里最高薪水)
這篇文章主要介紹了SQL實現(xiàn)LeetCode(184.系里最高薪水),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08MySQL(win7x64 5.7.16版本)下載、安裝、配置與使用的詳細圖文教程
這篇文章主要介紹了MySQL(win7x64 5.7.16版本)下載、安裝、配置與使用的詳細教程,本文圖文并茂給大家介紹的非常詳細,感興趣的朋友參考下2016-12-12最新版MySQL 8.0.22下載安裝超詳細教程(Windows 64位)
這篇文章主要介紹了最新版MySQL 8.0.22下載安裝超詳細教程(Windows 64位),本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12詳解MySQL主從復制實戰(zhàn) - 基于GTID的復制
本篇文章主要介紹了MySQL主從復制實戰(zhàn) - 基于GTID的復制,基于GTID的復制是MySQL 5.6后新增的復制方式.有興趣的可以了解一下。2017-03-03mysql group_concat()函數(shù)用法總結
這篇文章主要介紹了mysql group_concat()函數(shù)用法,結合實例形式較為詳細的group_concat()函數(shù)的功能、使用方法與相關注意事項,需要的朋友可以參考下2016-06-06