關於MySQL引數,這些你要知道
前言:
在前面一些文章中,經常能看到介紹某某引數的作用,可能有些小夥伴仍搞不清楚 MySQL 引數是啥。本篇文章我們來聊聊 MySQL 引數,學習下如何管理維護 MySQL 引數。
1.MySQL引數概念
我們所說的引數在官方文件中稱為
系統變數
(system variable),不同的變數有著不同的作用。 MySQL 服務端維護了許多表示其配置的系統變數,所有變數均有預設值。一般可以在啟動命令列中或配置檔案中對它們進行設定。
系統變數分為全域性系統變數(global)和會話系統變數(session)。有些變數既有全域性變數又有會話變數,有些變數只有全域性變數。全域性變數影響伺服器的全域性操作,會話變數隻影響具體客戶端連線相關操作。若會話變數未單獨設定,則繼承自相應全域性變數。
MySQL 服務啟動時,會按照配置檔案或命令列中指定的選項來給全域性變數賦值,沒有指定則按預設值處理。服務啟動後,通過連線伺服器並執行
SET GLOBAL var_name
語句可以動態更改部分全域性變數的值。要想更改全域性變數,必須具有 SUPER 許可權。 MySQL 還為每個客戶端連線維護會話變數,連線時使用相應全域性變數的當前值對客戶端會話變數進行初始化。客戶端可以通過
SET SESSION var_name
語句來動態更改會話變數。設定會話變數不需要特殊許可權,但會話變數只作用於當前連線。
2.引數查詢與變更示例
這裡也要說明下,並不是所有的引數都可以動態修改,某些引數只能寫入配置檔案然後重啟資料庫才能生效。下面我們來展示下 MySQL 引數的查詢與修改。
# 引數查詢
show global variables like 'var_name'; //檢視全域性系統變數的值,可使用%萬用字元
show session variables like 'var_name'; //檢視會話系統變數的值
show variables like 'var_name'; //優先返回會話系統變數,若會話系統變數不存在,則返回全域性系統變數。
# 也可用select查詢某個特定引數
select @@global.var_name; //全域性系統變數
select @@session.var_name; //會話系統變數
select @@var_name; //優先會話系統變數
# 查詢示例
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)
# 動態修改引數
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;
# 引數修改示例
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)
引數動態修改後,建議將其寫入配置檔案。因為動態修改的引數在 MySQL 服務重啟後會失效,只有寫入配置檔案才能夠重啟後仍有效。對於一些無法動態修改的引數,我們只能通過修改配置檔案,然後重啟來使之生效。這裡所說的配置檔案就是 my.cnf 檔案了,Linux 系統一般在 /etc 目錄下;Windows 系統一般在 basedir 目錄下,名稱可命名為 my.ini 。大部分引數需要配置在 [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 引數一般由 DBA 或運維來維護,可能有些同學對這些引數還比較陌生。建議在資料庫初始化時,根據伺服器規格設定對應的資料庫引數。對於不清楚作用的引數,建議保持預設值即可。關於更多引數相關的內容,可以參考官方文件:
總結:
本篇文章詳細講述了 MySQL 引數相關概念及查詢更改方法,希望各位小夥伴能學到相關知識。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31401187/viewspace-2717151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於雲原生,這些你要知道
- 關於神經網路:你需要知道這些神經網路
- 關於專案採購管理,這些你需要知道
- 關於 TDengine 3.0 資料訂閱,你需要知道這些
- 【格物獵蹤】關於OpenVPN反射攻擊,你還需要知道這些!反射
- [譯] 關於Angular的變更檢測(Change Detection)你需要知道這些Angular
- 你需要知道這些關於技術美術的知識構成
- 學node 之前你要知道這些
- 關於Flutter你要知道的可能都在這兒Flutter
- 這些CSS提效技巧,你需要知道!CSS
- 入門Python,這些優點你要知道!Python
- 關於 iOS 上的 PWA 應用,你需要知道些什麼?iOS
- 關於灰度釋出,你得知道這些......
- 關於 v-model 你需要知道的這一切!
- 關於CRM系統中的客戶概念,您需要知道這些
- 關於ES模組你必須要知道的一些禁忌(一)
- 這些關於WebSocket的知識,你知道多少?Web
- 關於Linux系統,這些你都知道嗎?Linux
- 關於跨域你需要知道的跨域
- Netty中的這些知識點,你需要知道!Netty
- 關於MySQL核心,一定要知道的!MySql
- 關於資訊保安,這些你都瞭解嗎?
- 採購CRM系統,你需要知道這些費用
- 入手《死亡擱淺》,這些問題你需要知道的
- 讓孩子愛上讀書,你需要知道這些方法
- 關於CSS Transition,你需要知道的事CSS
- MySQL效能相關引數MySql
- 關於Linux作業系統,這些你必須知道!Linux作業系統
- 關於JVM,你必須知道的這些知識點JVM
- Stable diffusion中這些重要的引數你一定要會用
- mysql一些引數的介紹MySql
- CSS你可以不寫,但這些規範必須要知道!CSS
- 建立合格的跨職能團隊,你需要知道這些!
- 關於Http協議,你必須要知道的HTTP協議
- 關於Service你所需要知道內容(一)
- 關於Android模組化你需要知道的Android
- MySQL 連線相關引數MySql
- 關於Linux系統,這些知識你都瞭解嗎?Linux