一、用户统计
MariaDB 5.2.0中引入了用户统计信息,MariaDB的用户统计实现基于Percona和Ourdelta的userstatv2补丁,原始代码来自Google(Mark Callaghan的团队),还有来自Percona,Ourdelta和Weldon Whipple的额外工作。MariaDB实现提供与userstatv2补丁相同的功能,但是已经做了大量更改,以使其更快,并更好地适应MariaDB基础架构。另外还添加了几个新的信息模式表和几个新的FLUSH和SHOW命令,这些表和命令可用于更好地了解服务器状态,并确定数据库负载的来源。
二、启用用户统计
缺省情况下,不开启统计信息,这是为了确保统计信息的收集不会在服务器上造成任何额外的负载,除非有需要。要启用统计信息收集,请在my.cnf文件中的[mysqld]部分中将以下行添加进去(或在启动服务器时在命令行中使用它):
1 |
userstat = 1 |
或者你可以简单地更改userstat系统变量的值:
1 |
SET GLOBAL userstat = 1; |
三、怎么运行的
Userstat通过在内存中保留几个哈希表来工作的,所有变量在查询运行时递增,在每个语句的末尾,全局值会被更新。
四、相关命令
Userstat提供以下新的FLUSH和SHOW命令。
FLUSH命令
这些命令会清除存储在指定信息模式表中的信息。
1 2 3 4 |
FLUSH TABLE_STATISTICS FLUSH INDEX_STATISTICS FLUSH USER_STATISTICS FLUSH CLIENT_STATISTICS |
SHOW命令
这些命令是显示存储在信息模式表中的信息的另一种方法,WHERE子句被接受,LIKE子句被接受但被忽略。
1 2 3 4 |
SHOW CLIENT_STATISTICS SHOW USER_STATISTICS SHOW INDEX_STATISTICS SHOW TABLE_STATISTICS |
六、信息模式表
用户统计信息在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) | 表中更改的行数乘以已更改的索引数。 |
完结。。。