MySQL 8.0 OCP (1Z0-908) 考點(diǎn)精析-性能優(yōu)化考點(diǎn)2:系統(tǒng)變量的確認(rèn)
在MySQL中有很多系統(tǒng)變量,我們可以通過多種方法確認(rèn)系統(tǒng)變量的設(shè)置狀況,常用的主要通過如下兩種。
- Performance Schema的系統(tǒng)變量表
- SHOW VARIABLES 命令
另外,我們通過 mysqladmin variables 命令也可以確認(rèn)系統(tǒng)變量的設(shè)置狀況。
Performance Schema的系統(tǒng)變量表
Performance Schema的系統(tǒng)變量表查看其值。
主要Performance Schema的系統(tǒng)變量表如下:
global_variables:全局系統(tǒng)變量。
session_variables:當(dāng)前會話的系統(tǒng)變量。
variables_by_thread:每個活動線程的會話變量,可通過線程ID查看相應(yīng)的會話變量。
persisted_variables: 存儲持久化全局系統(tǒng)變量設(shè)置的mysqld-auto.cnf 文件的SQL接口。
variables_info:顯示每個系統(tǒng)變量的最近設(shè)置源及其值范圍。
Performance Schema的各系統(tǒng)變量表的定義
各表的定義信息如下:
mysql> use performance_schema
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
mysql> desc global_variables;
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| VARIABLE_NAME | varchar(64) | NO | PRI | NULL | |
| VARIABLE_VALUE | varchar(1024) | YES | | NULL | |
+----------------+---------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> desc session_variables;
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| VARIABLE_NAME | varchar(64) | NO | PRI | NULL | |
| VARIABLE_VALUE | varchar(1024) | YES | | NULL | |
+----------------+---------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
mysql> desc variables_by_thread;
+----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-----------------+------+-----+---------+-------+
| THREAD_ID | bigint unsigned | NO | PRI | NULL | |
| VARIABLE_NAME | varchar(64) | NO | PRI | NULL | |
| VARIABLE_VALUE | varchar(1024) | YES | | NULL | |
+----------------+-----------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> desc persisted_variables;
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| VARIABLE_NAME | varchar(64) | NO | PRI | NULL | |
| VARIABLE_VALUE | varchar(1024) | YES | | NULL | |
+----------------+---------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> desc variables_info;
+-----------------+-----------------------------------------------------------------------------------------------------------+------+-----+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------------------------------------------------------------------------------------------------+------+-----+----------+-------+
| VARIABLE_NAME | varchar(64) | NO | | NULL | |
| VARIABLE_SOURCE | enum('COMPILED','GLOBAL','SERVER','EXPLICIT','EXTRA','USER','LOGIN','COMMAND_LINE','PERSISTED','DYNAMIC') | YES | | COMPILED | |
| VARIABLE_PATH | varchar(1024) | YES | | NULL | |
| MIN_VALUE | varchar(64) | YES | | NULL | |
| MAX_VALUE | varchar(64) | YES | | NULL | |
| SET_TIME | timestamp(6) | YES | | NULL | |
| SET_USER | char(32) | YES | | NULL | |
| SET_HOST | char(255) | YES | | NULL | |
+-----------------+-----------------------------------------------------------------------------------------------------------+------+-----+----------+-------+
8 rows in set (0.00 sec)
mysql>
我們可以看到global_variables、session_variables、persisted_variables表都包含兩列:
VARIABLE_NAME:變量名
VARIABLE_VALUE:變量值。
對于global_variables,表示全局值;
對于session_variables,表示當(dāng)前會話生效的變量值;
對于persisted_variables,表示持久存儲的變量值。
variables_by_thread表的列含義如下:
THREAD_ID:會話級別系統(tǒng)變量對應(yīng)的線程ID
VARIABLE_NAME:會話級別系統(tǒng)變量名
VARIABLE_VALUE:會話級別系統(tǒng)變量值
variables_info表的列含義如下:
列名 | 解釋 |
---|---|
VARIABLE_NAME | 變量名 |
VARIABLE_SOURCE | 配置的來源,也就是由于什么改變了變量 |
VARIABLE_PATH | 如果變量是從選項(xiàng)文件中設(shè)置的,則variable_PATH是該文件的路徑名。否則,該值為空。 |
MIN_VALUE | 變量允許的最小值。 |
MAX_VALUE | 變量允許的最大值。 |
SET_TIME | 最近設(shè)置變量的時間。 |
SET_USER | 最近設(shè)置變量的客戶端用戶的用戶名。 |
SET_HOST | 最近設(shè)置變量的客戶端用戶的主機(jī)名。 |
變量查詢例
我們可以通過查詢這些表來查看變量的各級別設(shè)置狀態(tài)。
--全局變量例
mysql> select * from global_variables where VARIABLE_NAME='sort_buffer_size';
+------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+------------------+----------------+
| sort_buffer_size | 262144 |
+------------------+----------------+
1 row in set (0.01 sec)
--會話級別變量例
mysql> select * from session_variables where VARIABLE_NAME='sort_buffer_size';
+------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+------------------+----------------+
| sort_buffer_size | 262144 |
+------------------+----------------+
1 row in set (0.01 sec)
--各個線程的設(shè)置狀況
mysql> select * from variables_by_thread where VARIABLE_NAME='sort_buffer_size';
+-----------+------------------+----------------+
| THREAD_ID | VARIABLE_NAME | VARIABLE_VALUE |
+-----------+------------------+----------------+
| 70 | sort_buffer_size | 262144 |
| 71 | sort_buffer_size | 262144 |
+-----------+------------------+----------------+
2 rows in set (0.01 sec)
SHOW VARIABLES 查看變量
除了系統(tǒng)變量表,還可以通過SHOW VARIABLES 查看變量的設(shè)置情況。
SHOW VARIABLES語法:
SHOW [GLOBAL | SESSION] VARIABLES
[LIKE 'pattern' | WHERE expr]
SHOW VARIABLES可以通過可選的GLOBAL或SESSION變量查看不同級別的變量設(shè)置情況。
- GLOBAL:顯示全局系統(tǒng)變量值。如果變量沒有全局值,則不會顯示任何值。
- SESSION:顯示當(dāng)前連接有效的系統(tǒng)變量值。如果變量沒有會話值,則顯示全局值。LOCAL是SESSION的同義詞。
- 如果沒有指定GLOBAL或者SESSION,則默認(rèn)值為SESSION。
變量查詢例
mysql> set session sort_buffer_size = 300000;
Query OK, 0 rows affected (0.00 sec)
--全局變量
mysql> SHOW GLOBAL VARIABLES LIKE 'sort_buffer_size';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| sort_buffer_size | 262144 |
+------------------+--------+
1 row in set (0.00 sec)
--會話級別變量
mysql> SHOW SESSION VARIABLES LIKE 'sort_buffer_size';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| sort_buffer_size | 300000 |
+------------------+--------+
1 row in set (0.00 sec)
mysql> SHOW VARIABLES LIKE 'sort_buffer_size';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| sort_buffer_size | 300000 |
+------------------+--------+
1 row in set (0.00 sec)
mysql>
SELECT @@<變量名>
也可以通過SELECT @@<變量名>來查看變量
@@global.<變量名> :用于標(biāo)記全局變量;
@@session<變量名> :用于標(biāo)記會話變量;
@@<變量名> :首先標(biāo)記會話變量,如果會話變量不存在,則標(biāo)記全局變量。
mysql> SELECT @@sort_buffer_size ;
+--------------------+
| @@sort_buffer_size |
+--------------------+
| 300000 |
+--------------------+
1 row in set (0.00 sec)
mysql> select @@global.sort_buffer_size;
+---------------------------+
| @@global.sort_buffer_size |
+---------------------------+
| 262144 |
+---------------------------+
1 row in set (0.00 sec)
mysql> select @@session.sort_buffer_size;
+----------------------------+
| @@session.sort_buffer_size |
+----------------------------+
| 262144 |
+----------------------------+
1 row in set (0.00 sec)
例題
Choose the best answer. You want to check the values of the sort_buffer_size session variables of all existing connections.
Which performance_schema table can you query?
A) user_variables_by_thread
B) global_variables
C) variables_by_thread
D) session_variables
例題解析
本題的關(guān)鍵點(diǎn)在于要查看所有連接的會話( all existing connections)的sort_buffer_size 設(shè)置情況,所以需要通過variables_by_thread來確認(rèn)。
參考答案: C文章來源:http://www.zghlxwxcb.cn/news/detail-417769.html
參考
https://dev.mysql.com/doc/refman/8.0/en/performance-schema-system-variable-tables.html
https://dev.mysql.com/doc/refman/8.0/en/performance-schema-variables-info-table.html
https://dev.mysql.com/doc/refman/8.0/en/show-variables.html
https://dev.mysql.com/doc/refman/8.0/en/mysqladmin.html文章來源地址http://www.zghlxwxcb.cn/news/detail-417769.html
到了這里,關(guān)于MySQL 8.0 OCP (1Z0-908) 考點(diǎn)精析-性能優(yōu)化考點(diǎn)2:系統(tǒng)變量的確認(rèn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!