• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

MariaDB用户统计功能介绍

MariaDB 彭东稳 7年前 (2017-08-23) 30481次浏览 已收录 0个评论

一、用户统计

MariaDB 5.2.0中引入了用户统计信息,MariaDB的用户统计实现基于Percona和Ourdelta的userstatv2补丁,原始代码来自Google(Mark Callaghan的团队),还有来自Percona,Ourdelta和Weldon Whipple的额外工作。MariaDB实现提供与userstatv2补丁相同的功能,但是已经做了大量更改,以使其更快,并更好地适应MariaDB基础架构。另外还添加了几个新的信息模式表和几个新的FLUSH和SHOW命令,这些表和命令可用于更好地了解服务器状态,并确定数据库负载的来源。

二、启用用户统计

缺省情况下,不开启统计信息,这是为了确保统计信息的收集不会在服务器上造成任何额外的负载,除非有需要。要启用统计信息收集,请在my.cnf文件中的[mysqld]部分中将以下行添加进去(或在启动服务器时在命令行中使用它):

或者你可以简单地更改userstat系统变量的值:

三、怎么运行的

Userstat通过在内存中保留几个哈希表来工作的,所有变量在查询运行时递增,在每个语句的末尾,全局值会被更新。

四、相关命令

Userstat提供以下新的FLUSH和SHOW命令。

FLUSH命令

这些命令会清除存储在指定信息模式表中的信息。

SHOW命令

这些命令是显示存储在信息模式表中的信息的另一种方法,WHERE子句被接受,LIKE子句被接受但被忽略。

六、信息模式表

用户统计信息在INFORMATION_SCHEMA数据库中添加以下新表:

CLIENT_STATISTICS

该CLIENT_STATISTICS表保存有关客户端连接的统计信息。

字段 类型 注释
CLIENT VARCHAR(64) 连接源的IP地址或主机名。
TOTAL_CONNECTIONS INT(21) 为此客户端创建的连接数。
CONCURRENT_CONNECTIONS INT(21) 此客户端的并发连接数。
CONNECTED_TIME INT(21) 当客户端有连接时累积的秒数。
BUSY_TIME double 从该客户端连接的累积活动秒数。
CPU_TIME double 服务此客户端连接时累积的CPU时间,请注意,如果在执行查询期间线程有CPU迁移,则SMP系统上的此数字可能是错误的。
BYTES_RECEIVED INT(21) 从该客户端的连接接收的字节数。
BYTES_SENT INT(21) 发送到此客户端连接的字节数。
BINLOG_BYTES_WRITTEN INT(21) 从该客户端的连接写入二进制日志的字节数。
ROWS_READ INT(21) 此客户端连接读取的行数。
ROWS_SENT INT(21) 此客户端连接发送的行数。
ROWS_DELETED INT(21) 此客户端连接删除的行数。
ROWS_INSERTED INT(21) 此客户端连接插入的行数。
ROWS_UPDATED INT(21) 此客户端连接更新的行数。
SELECT_COMMANDS INT(21) 从该客户端的连接执行的SELECT命令的数量。
UPDATE_COMMANDS INT(21) 从该客户端的连接执行的UPDATE命令的数量。
OTHER_COMMANDS INT(21) 从该客户端的连接执行的其他命令的数量。
COMMIT_TRANSACTIONS INT(21) 此客户端连接提交的事务数。
ROLLBACK_TRANSACTIONS INT(21) 此客户端连接回滚的事务数。
DENIED_CONNECTIONS INT(21) 此客户端拒绝的连接数。
LOST_CONNECTIONS INT(21) 这个客户端的连接数不合格。
ACCESS_DENIED INT(21) 此客户端的连接发出的命令被拒绝的次数。
EMPTY_QUERIES INT(21) 此客户端的连接发送查询的次数不会将结果返回给服务器。
TOTAL_SSL_CONNECTIONS INT(21) 为此客户端创建的TLS连接数。(> = MariaDB 10.1.1)
MAX_STATEMENT_TIME_EXCEEDED INT(21) 因为它的执行时间超过了MAX_STATEMENT_TIME个阈值,因此语句被中止的次数。(> = MariaDB 10.1.1)

USER_STATISTICS

该USER_STATISTICS表保存有关用户活动的统计数据,你可以使用此表来查找哪些用户导致最多的负载和哪些用户被滥用的事情。你也可以使用此表来衡量服务器可能接近容量。

领域 类型 笔记
USER VARCHAR(48) 用户名,当没有用户名(如从属SQL线程)时,会显示值’#mysql_system_user#’。
TOTAL_CONNECTIONS INT(21) 为此用户创建的连接数。
CONCURRENT_CONNECTIONS INT(21) 此用户的并发连接数。
CONNECTED_TIME INT(21) 有来自该用户的连接的累计秒数。
BUSY_TIME double 此用户连接上累积的活动秒数。
CPU_TIME double 维护此用户连接时累积CPU时间。
BYTES_RECEIVED INT(21) 从该用户的连接接收的字节数。
BYTES_SENT INT(21) 发送到此用户连接的字节数。
BINLOG_BYTES_WRITTEN INT(21) 从该用户的连接写入二进制日志的字节数。
ROWS_READ INT(21) 该用户连接读取的行数。
ROWS_SENT INT(21) 该用户连接发送的行数。
ROWS_DELETED INT(21) 该用户连接删除的行数。
ROWS_INSERTED INT(21) 此用户连接插入的行数。
ROWS_UPDATED INT(21) 此用户连接更新的行数。
SELECT_COMMANDS INT(21) 从该用户的连接执行的SELECT命令的数量。
UPDATE_COMMANDS INT(21) 从该用户的连接执行的UPDATE命令的数量。
OTHER_COMMANDS INT(21) 从该用户的连接执行的其他命令的数量。
COMMIT_TRANSACTIONS INT(21) 该用户连接提交的COMMIT事务数。
ROLLBACK_TRANSACTIONS INT(21) 此用户连接回滚的事务数。
DENIED_CONNECTIONS INT(21) 此用户拒绝的连接数。
LOST_CONNECTIONS INT(21) 该用户的连接数不正确地终止。
ACCESS_DENIED INT(21) 该用户的连接发出的命令的次数被拒绝。
EMPTY_QUERIES INT(21) 此用户的连接发送查询的次数不会将结果返回给服务器。
TOTAL_SSL_CONNECTIONS INT(21) 为此客户端创建的TLS连接数。(> = MariaDB 10.1.1)
MAX_STATEMENT_TIME_EXCEEDED INT(21) 因为它的执行时间超过了MAX_STATEMENT_TIME个阈值,因此语句被中止的次数。(> = MariaDB 10.1.1)

INDEX_STATISTICS

该INDEX_STATISTICS表显示索引使用统计,可作为定位未使用的索引。

字段 类型 注释
TABLE_SCHEMA VARCHAR(192) 模式(数据库)名称。
TABLE_NAME VARCHAR(192) 表名。
INDEX_NAME VARCHAR(192) 索引名称。
ROWS_READ INT(21) 从此索引读取的行数。

TABLE_STATISTICS

该TABLE_STATISTICS表类似于INDEX_STATISTICS表,它显示了表使用情况的统计。

领域 类型 笔记
TABLE_SCHEMA VARCHAR(192) 模式(数据库)名称。
TABLE_NAME VARCHAR(192) 表名。
ROWS_READ INT(21) 从表中读取的行数。
ROWS_CHANGED INT(21) 表中更改的行数。
ROWS_CHANGED_X_INDEXES INT(21) 表中更改的行数乘以已更改的索引数。

完结。。。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!