MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认

这篇具有很好参考价值的文章主要介绍了MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认

在MySQL中有很多系统变量,我们可以通过多种方法确认系统变量的设置状况,常用的主要通过如下两种。

  • Performance Schema的系统变量表
  • SHOW VARIABLES 命令

另外,我们通过 mysqladmin variables 命令也可以确认系统变量的设置状况。

Performance Schema的系统变量表

Performance Schema的系统变量表查看其值。
主要Performance Schema的系统变量表如下:

global_variables:全局系统变量。
session_variables:当前会话的系统变量。
variables_by_thread:每个活动线程的会话变量,可通过线程ID查看相应的会话变量。
persisted_variables: 存储持久化全局系统变量设置的mysqld-auto.cnf 文件的SQL接口。
variables_info:显示每个系统变量的最近设置源及其值范围。
Performance Schema的各系统变量表的定义

各表的定义信息如下:

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,表示当前会话生效的变量值;
对于persisted_variables,表示持久存储的变量值。

variables_by_thread表的列含义如下:

THREAD_ID:会话级别系统变量对应的线程ID
VARIABLE_NAME:会话级别系统变量名
VARIABLE_VALUE:会话级别系统变量值

variables_info表的列含义如下:

列名 解释
VARIABLE_NAME 变量名
VARIABLE_SOURCE 配置的来源,也就是由于什么改变了变量
VARIABLE_PATH 如果变量是从选项文件中设置的,则variable_PATH是该文件的路径名。否则,该值为空。
MIN_VALUE 变量允许的最小值。
MAX_VALUE 变量允许的最大值。
SET_TIME 最近设置变量的时间。
SET_USER 最近设置变量的客户端用户的用户名。
SET_HOST 最近设置变量的客户端用户的主机名。
变量查询例

我们可以通过查询这些表来查看变量的各级别设置状态。

--全局变量例
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)

--各个线程的设置状况
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 查看变量

除了系统变量表,还可以通过SHOW VARIABLES 查看变量的设置情况。

SHOW VARIABLES语法:

SHOW [GLOBAL | SESSION] VARIABLES
    [LIKE 'pattern' | WHERE expr]

SHOW VARIABLES可以通过可选的GLOBAL或SESSION变量查看不同级别的变量设置情况。

- GLOBAL:显示全局系统变量值。如果变量没有全局值,则不会显示任何值。
- SESSION:显示当前连接有效的系统变量值。如果变量没有会话值,则显示全局值。LOCAL是SESSION的同义词。
- 如果没有指定GLOBAL或者SESSION,则默认值为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.<变量名>  :用于标记全局变量;
@@session<变量名> :用于标记会话变量;
@@<变量名>       :首先标记会话变量,如果会话变量不存在,则标记全局变量。
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

例题解析

本题的关键点在于要查看所有连接的会话( all existing connections)的sort_buffer_size 设置情况,所以需要通过variables_by_thread来确认。

参考答案: C

参考

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文章来源地址https://www.toymoban.com/news/detail-417769.html

到了这里,关于MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点2:系统变量的确认的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 让ChatGPT做一下MySQL 8.0 OCP(1Z0-908)的真题,我松了一口气

    MySQL OCP分成中文和英文两种,Oracle OCP只有英文考试,这里我们用MySQL 8.0 OCP(1Z0-908)的中文真题测试一下ChatGPT,看看ChatGPT能否获得MySQL OCP的认证,用这种方法判断ChatGPT会不会代替我们人类DBA的工作。 1报告在MySQL服务器上运行的所有当前连接,ChatGPT准确地列出了3个: SELECT

    2024年02月04日
    浏览(41)
  • 解析MySQL 8.0 OCP(1Z0-908)考试中一道大部分同学都会做错的题目(文末附录像)

    一个用户有下面的权限: jsmith可以执行哪两条SQL语句? A)UPDATE world.country SET Name=\\\'all; B)UPDATE world.Country SET Name=‘new’ WHERE Name=\\\'old; C)UPDATE world.country SET Name=‘one’ LIMIT1; D)UPDATE world.country SET Name=‘first’ ORDER BY Name LIMIT 1; E)UPDATE world.country SET Name=CONCAT(‘New’,Name); 我们看到这

    2024年02月08日
    浏览(31)
  • 开源数据库MySQL 8.0 OCP认证精讲视频、环境和题库 之二

    修改用户的初始密码: mysqlalteruserroot@localhostidentifiedby\\\'Qaz1234; 或者: mysqlalteruseruser0identifiedby\\\'Qaz_1234\\\'; 在版本5.x中: mysqlsetpassword=password(Qaz_1234\\\'); 可执行文件: 服务器端:mysgld多线程 客户端:mysqlmysqladminmysqldumpmysqlbackup mysqlshowdatabases; mysqlselectdatabaseO; mysqlselectuser0; mysqlcrea

    2024年02月08日
    浏览(39)
  • MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存 、表空间

       缓存与事务有关的redo log ,用来对mysql进行crash恢复,不可禁用;    日志缓冲区是存储要写入磁盘上日志文件的数据的内存区域。日志缓冲区大小由innodb_Log_buffer_size变量定义。    默认大小为16MB。日志缓冲区的内容会定期刷新到磁盘。大型日志缓冲区使大型事务能够运行

    2024年02月07日
    浏览(32)
  • MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读

        1、编辑选项文件,指定以下选项:     [mysqld]         basedir=/mysql80         datadir=/mysql80/data1         socket=/mysql80/data1/mysqld.sock         pid-file=/mysql80/data1/mysqld.pid         log-error=/mysql80/data1/mysqld.log     2、初始化         /mysql80/bin/mysqld --defaults-file=/mys

    2024年02月07日
    浏览(28)
  • Oracle 19c OCP 1z0 082考场真题解析第32题

    考试科目:1Z0-083 考试题量:85 通过分数:57% 考试时间:150min 本文为云贝教育郭一军(微信:guoyJoe)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。【云贝教育】Oracle 19c OCP 083题库解析(32) - 课程体系 - 云贝教育 32 、Which two are tru

    2024年01月23日
    浏览(32)
  • Oracle数据库19c OCP 1z0-082考场真题解析第24题

    考试科目:1Z0-082 考试题量:90 通过分数:60% 考试时间:150min 本文为云贝教育郭一军guoyJoe原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。【云贝教育】Oracle 19c OCP 082题库解析(24) - 课程体系 - 云贝教育 24.Which three statements are true reg

    2024年01月18日
    浏览(44)
  • 读高性能MySQL(第4版)笔记04_操作系统和硬件优化

    4.9.2.1. 允许在内存中更改页面,而不用将更改刷新到磁盘,这通常涉及随机I/O,速度非常慢 4.9.2.2. 将更改的记录写入顺序日志文件,这样要快得多 4.9.2.3. 后台线程可以稍后将修改过的页面刷新到磁盘,这样做可以优化写操作的性能 5.11.2.1. 只有进行特殊的擦除操作之后,

    2024年02月09日
    浏览(32)
  • 你真的了解MySQL OCP吗?其实有两种MySQL OCP

    大家可能都知道MySQL OCP认证,但你知道吗MySQL OCP其实是分两种,以MySQL 8.0为例, 一种是管理方向,叫:Oracle Certified Professional, MySQL 8.0 Database Administrator 另一个是开发方向的,MySQL 8.0 Database Developer Oracle Certified Professional 关于博主,姚远: Oracle ACE(Oracle和MySQL数据库方向)

    2024年02月13日
    浏览(29)
  • 《高性能MYSQL》-- 查询性能优化

    查询性能优化 深刻地理解MySQL如何真正地执行查询,并明白高效和低效的原因何在 查询的生命周期(不完整):从客户端到服务器,然后服务器上进行语法解析,生成执行计划,执行,并给客户端返回结果。 一条查询,如果查询得很慢,原因大概率是访问的数据太多 对于低

    2024年03月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包