MySQL 9从入门到性能优化-系统信息函数

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客

《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com)

MySQL9数据库技术_夏天又到了的博客-CSDN博客

MySQL中的系统信息有数据库的版本号、当前用户名和连接数、系统字符集、最后一个自动生成的ID值等。本节将介绍常用的获取系统信息的函数。

4.6.1 获取MySQL版本号、连接数和数据库名的函数

VERSION()返回指示MySQL服务器版本的字符串。这个字符串使用utf8字符集。

【例4.89】查看当前MySQL版本号,SQL语句如下:

复制代码
mysql> SELECT VERSION();
+--------------+
| VERSION()    |
+--------------+
| 9.0.1        |
+--------------+

CONNECTION_ID()返回MySQL服务器当前连接的次数,每个连接都有各自唯一的ID。

【例4.90】查看当前用户的连接数,SQL语句如下:

复制代码
 mysql> SELECT CONNECTION_ID();
+--------------------------+
| CONNECTION_ID()          |
+--------------------------+
|                 23       |
+--------------------------+

这里返回23,返回值根据登录的次数会有所不同。

SHOW PROCESSLIST命令的输出结果显示有哪些线程正在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态,帮助识别出有问题的查询语句等。

如果是root账号,则能看到所有用户的当前连接;如果是其他普通账号,则只能看到自己占用的连接。SHOW PROCESSLIST只列出前100条数据,如果想全部列出,可以使用SHOW FULL PROCESSLIST命令。

【例4.91】使用SHOW PROCESSLIST命令输出当前用户的连接信息,SQL语句如下:

复制代码
MySQL> SHOW PROCESSLIST;
+--+---------------+---------------+----+-------+------+-----------------------+-----------
|Id|User           | Host          | db |Command| Time | State                 | Info  
+--+---------------+---------------+----+-------+------+-----------------------+-----------
|4 |event_scheduler|localhost      |NULL|Daemon |15274 | Waiting on empty queue|NULL        
|23|root           |localhost:58788|NULL|Query  | 0    | starting              |SHOW ROCESSLIST
+--+---------------+---------------+----+-------+------+-----------------------+-----------

各个列说明如下:

  • ID列:用户登录MySQL时,系统分配的是"connection id"。
  • User列:显示当前用户。如果不是root,那么这个命令只显示用户权限范围内的SQL语句。
  • Host列:显示这个语句是从哪个IP的哪个端口上发出的,可以用来追踪出现问题语句的 用户。
  • db列:显示这个进程目前连接的是哪个数据库。
  • Command列:显示当前连接执行的命令,一般取值为休眠(Sleep)、查询(Query)、连接(Connect)。
  • Time列:显示这个状态持续的时间,单位是秒。
  • State列:显示使用当前连接的SQL语句的状态,是很重要的列。State只是语句执行中的某一个状态。一个SQL语句,以查询为例,可能需要经过Copying to tmp table、Sorting result、Sending data等状态才可以完成。后续会介绍所有状态。
  • Info列:显示这个SQL语句,是判断问题语句的一个重要依据。

使用另一个命令行登录MySQL,此时将会有2个连接。在第二个登录的命令行下再次输入SHOW PROCESSLIST,结果如下:

复制代码
mysql> SHOW PROCESSLIST;
+----+------+--------------+----+---------+--------+--------+----------------+
| Id | User | Host         | db | Command | Time   | State  | Info           |
+----+------+--------------+----+---------+--------+--------+----------------+
|  1 | root |localhost:3602|NULL| Sleep   |   38   |        | NULL           |
|  2 | root |localhost:3272|NULL| Query   |   0    |NULL    |show processlist|
+----+------+--------------+----+---------+--------+--------+----------------+

可以看到,当前活动用户为已登录的连接Id为2的用户,正在执行的Command(操作命令)是Query(查询),使用的查询命令为SHOW PROCESSLIST;而连接Id为1的用户目前没有对数据进行操作,即为Sleep操作,而且已经经过了38秒。

DATABASE()和SCHEMA()函数返回使用utf8字符集的默认(当前)数据库名。

【例4.92】查看当前使用的数据库,SQL语句如下:

复制代码
mysql> SELECT DATABASE(),SCHEMA();
+----------------+----------------+
| DATABASE()     | SCHEMA()       |
+----------------+----------------+
| test_db        | test_db        |
+----------------+----------------+

可以看到,两个函数的作用相同。

4.6.2 获取用户名的函数

USER()、CURRENT_USER、CURRENT_USER()、SYSTEM_USER()和SESSION_USER()这几个函数返回当前被MySQL服务器验证的用户名和主机名组合。这个值用于确定当前登录用户在MySQL中的存取权限。一般情况下,这几个函数的返回值相同。

【例4.93】获取当前登录用户名称,SQL语句如下:

复制代码
mysql> SELECT USER(), CURRENT_USER(), SYSTEM_USER();
+----------------+----------------+----------------+
| USER()         | CURRENT_USER() | SYSTEM_USER()  |
+----------------+----------------+----------------+
| root@localhost | root@localhost | root@localhost |
+----------------+----------------+----------------+

返回结果指示了当前账户连接服务器时的用户名及所连接的客户主机,root为当前登录的用户名,localhost为登录的主机名。

相关推荐
白帽小丑10 小时前
# 一次 MySQL DELETE 误操作的数据恢复尝试实录
数据库·mysql
Dxy123931021611 小时前
MySQL索引完整教程:创建、查看、修改、删除与日常管理
前端·javascript·mysql
Quincy_Freak12 小时前
信创内网数据规范实践:银河麒麟下SQLite本地数据安全管理方案
数据库·sqlite·arm·数据库管理·大数据分析·银河麒麟·aarch64
至乐活着13 小时前
MySQL索引底层原理与查询优化实战:从B+树到执行计划
mysql·b+树·查询优化·sql性能·索引原理
2601_9626838914 小时前
治理遗留系统中的“生肉 SQL”:一次用多模型协作优化慢查询的实战复盘
数据库·人工智能·sql
酱学编程15 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
shushangyun_16 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
华山令狐虫17 小时前
DBAPI AI 写 SQL:支持动态 SQL 与参数占位符,自然语言一键生成
数据库·人工智能·sql·dbapi
IvorySQL17 小时前
PG 技术日报|2026-07-04
数据库·人工智能·postgresql·开源
Hoxy.R18 小时前
KingbaseES读写分离高可用集群扩容、备库重建与故障切换实战
运维·数据库