]]>
]]>
You were redirected here from patches:userstatv2.

User Statistics

Description

This feature adds several INFORMATION_SCHEMA tables, several commands, and the userstat variable. The tables and commands can be used to understand the server activity better and identify the source of the load.

The functionality is disabled by default, and must be enabled by setting userstat to ON. It works by keeping several hash tables in memory. To avoid contention over global mutexes, each connection has its own local statistics, which are occasionally merged into the global statistics, and the local statistics are then reset to 0.

Version Specific Information

Percona-Server Version Comments
5.5.10-20.1 Renamed variable userstat_running to userstat.

Other Information

Author/Origin Google; Percona added the INFORMATION_SCHEMA tables and the userstat_running variable.

System Variables

userstat

:!: This variable was named userstat_running in releases before 5.5.10-20.1.

General Description:
Version Info 5.5.10-20.1
Command Line Yes
Config File Yes
Variable Scope Global
Dynamic Variable Yes
Permitted Values:
Type BOOL
Default Value OFF
Range ON/OFF
Units Unitless

Enables or disables collection of statistics. The default is OFF, meaning no statistics are gathered. This is to ensure that the statistics collection doesn't cause any extra load on the server unless desired.

INFORMATION_SCHEMA Tables

CLIENT_STATISTICS

This table holds statistics about client connections. The Percona version of the feature restricts this table's visibility to users who have the SUPER or PROCESS privilege.

Field Notes
CLIENT The IP address or hostname from which the connection originated.
TOTAL_CONNECTIONS The number of connections created for this client.
CONCURRENT_CONNECTIONS The number of concurrent connections for this client.
CONNECTED_TIME The cumulative number of seconds elapsed while there were connections from this client.
BUSY_TIME The cumulative number of seconds there was activity on connections from this client.
CPU_TIME The cumulative CPU time elapsed while servicing this client's connections.
BYTES_RECEIVED The number of bytes received from this client's connections.
BYTES_SENT The number of bytes sent to this client's connections.
BINLOG_BYTES_WRITTEN The number of bytes written to the binary log from this client's connections.
ROWS_FETCHED The number of rows fetched by this client's connections.
ROWS_UPDATED The number of rows updated by this client's connections.
TABLE_ROWS_READ The number of rows read from tables by this client's connections. (It may be different from ROWS_FETCHED.)
SELECT_COMMANDS The number of SELECT commands executed from this client's connections.
UPDATE_COMMANDS The number of UPDATE commands executed from this client's connections.
OTHER_COMMANDS The number of other commands executed from this client's connections.
COMMIT_TRANSACTIONS The number of COMMIT commands issued by this client's connections.
ROLLBACK_TRANSACTIONS The number of ROLLBACK commands issued by this client's connections.
DENIED_CONNECTIONS The number of connections denied to this client.
LOST_CONNECTIONS The number of this client's connections that were terminated uncleanly.
ACCESS_DENIED The number of times this client's connections issued commands that were denied.
EMPTY_QUERIES The number of times this client's connections sent empty queries to the server.

Example

mysql> SELECT * FROM INFORMATION_SCHEMA.CLIENT_STATISTICS\G
*************************** 1. row ***************************
                CLIENT: 10.1.12.30
     TOTAL_CONNECTIONS: 20
CONCURRENT_CONNECTIONS: 0
        CONNECTED_TIME: 0
             BUSY_TIME: 93
              CPU_TIME: 48
        BYTES_RECEIVED: 5031
            BYTES_SENT: 276926
  BINLOG_BYTES_WRITTEN: 217
          ROWS_FETCHED: 81
          ROWS_UPDATED: 0
       TABLE_ROWS_READ: 52836023
       SELECT_COMMANDS: 26
       UPDATE_COMMANDS: 1
        OTHER_COMMANDS: 145
   COMMIT_TRANSACTIONS: 1
 ROLLBACK_TRANSACTIONS: 0
    DENIED_CONNECTIONS: 0
      LOST_CONNECTIONS: 0
         ACCESS_DENIED: 0
         EMPTY_QUERIES: 0

INDEX_STATISTICS

This table shows statistics on index usage. An older version of the feature contained a single column that had the TABLE_SCHEMA, TABLE_NAME and INDEX_NAME columns concatenated together. The Percona version of the feature separates these into three columns. Users can see entries only for tables to which they have SELECT access.

This table makes it possible to do many things that were difficult or impossible previously. For example, you can use it to find unused indexes and generate DROP commands to remove them.

Field Notes
TABLE_SCHEMA The schema (database) name.
TABLE_NAME The table name.
INDEX_NAME The index name (as visible in SHOW CREATE TABLE).
ROWS_READ The number of rows read from this index.

Example

mysql> SELECT * FROM INFORMATION_SCHEMA.INDEX_STATISTICS
   WHERE TABLE_NAME='tables_priv';
+--------------+-----------------------+--------------------+-----------+
| TABLE_SCHEMA | TABLE_NAME            | INDEX_NAME         | ROWS_READ |
+--------------+-----------------------+--------------------+-----------+
| mysql        | tables_priv           | PRIMARY            |         2 |
+--------------+-----------------------+--------------------+-----------+

TABLE_STATISTICS

This table is similar in function to the INDEX_STATISTICS table.

Field Notes
TABLE_SCHEMA The schema (database) name.
TABLE_NAME The table name.
ROWS_READ The number of rows read from the table.
ROWS_CHANGED The number of rows changed in the table.
ROWS_CHANGED_X_INDEXES The number of rows changed in the table, multiplied by the number of indexes changed.

Example

mysql> SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS
   WHERE TABLE_NAME='tables_priv';
+--------------+-------------------------------+-----------+--------------+------------------------+
| TABLE_SCHEMA | TABLE_NAME                    | ROWS_READ | ROWS_CHANGED | ROWS_CHANGED_X_INDEXES |
+--------------+-------------------------------+-----------+--------------+------------------------+
| mysql        | tables_priv                   |         2 |            0 |                      0 | 
+--------------+-------------------------------+-----------+--------------+------------------------+

THREAD_STATISTICS

Field Notes
THREAD_ID int(21)
TOTAL_CONNECTIONS int(21)
CONCURRENT_CONNECTIONS int(21)
CONNECTED_TIME int(21)
BUSY_TIME int(21)
CPU_TIME int(21)
BYTES_RECEIVED int(21)
BYTES_SENT int(21)
BINLOG_BYTES_WRITTEN int(21)
ROWS_FETCHED int(21)
ROWS_UPDATED int(21)
TABLE_ROWS_READ int(21)
SELECT_COMMANDS int(21)
UPDATE_COMMANDS int(21)
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)

USER_STATISTICS

This table contains information about user activity. The Percona version of the patch restricts this table's visibility to users who have the SUPER or PROCESS privilege.

The table gives answers to questions such as which users cause the most load, and whether any users are being abusive. It also lets you measure how close to capacity the server may be. For example, you can use it to find out whether replication is likely to start falling behind.

Field Notes
USER The username. The value '#mysql_system_user#' appears when there is no username (such as for the slave SQL thread).
TOTAL_CONNECTIONS The number of connections created for this user.
CONCURRENT_CONNECTIONS The number of concurrent connections for this user.
CONNECTED_TIME The cumulative number of seconds elapsed while there were connections from this user.
BUSY_TIME The cumulative number of seconds there was activity on connections from this user.
CPU_TIME The cumulative CPU time elapsed while servicing this user's connections.
BYTES_RECEIVED The number of bytes received from this user's connections.
BYTES_SENT The number of bytes sent to this user's connections.
BINLOG_BYTES_WRITTEN The number of bytes written to the binary log from this user's connections.
ROWS_FETCHED The number of rows fetched by this user's connections.
ROWS_UPDATED The number of rows updated by this user's connections.
TABLE_ROWS_READ The number of rows read from tables by this user's connections. (It may be different from ROWS_FETCHED.)
SELECT_COMMANDS The number of SELECT commands executed from this user's connections.
UPDATE_COMMANDS The number of UPDATE commands executed from this user's connections.
OTHER_COMMANDS The number of other commands executed from this user's connections.
COMMIT_TRANSACTIONS The number of COMMIT commands issued by this user's connections.
ROLLBACK_TRANSACTIONS The number of ROLLBACK commands issued by this user's connections.
DENIED_CONNECTIONS The number of connections denied to this user.
LOST_CONNECTIONS The number of this user's connections that were terminated uncleanly.
ACCESS_DENIED The number of times this user's connections issued commands that were denied.
EMPTY_QUERIES The number of times this user's connections sent empty queries to the server.

Example

mysql> SELECT * FROM INFORMATION_SCHEMA.USER_STATISTICS\G
*************************** 1. row ***************************
                  USER: root
     TOTAL_CONNECTIONS: 5592
CONCURRENT_CONNECTIONS: 0
        CONNECTED_TIME: 6844
             BUSY_TIME: 179
              CPU_TIME: 72
        BYTES_RECEIVED: 603344
            BYTES_SENT: 15663832
  BINLOG_BYTES_WRITTEN: 217
          ROWS_FETCHED: 9793
          ROWS_UPDATED: 0
       TABLE_ROWS_READ: 52836023
       SELECT_COMMANDS: 9701
       UPDATE_COMMANDS: 1
        OTHER_COMMANDS: 2614
   COMMIT_TRANSACTIONS: 1
 ROLLBACK_TRANSACTIONS: 0
    DENIED_CONNECTIONS: 0
      LOST_CONNECTIONS: 0
         ACCESS_DENIED: 0
         EMPTY_QUERIES: 0

Commands Provided

FLUSH [CLIENT_STATISTICS|INDEX_STATISTICS|TABLE_STATISTICS|THREAD_STATISTICS|USER_STATISTICS]

These commands discard the specified type of stored statistical information.

SHOW [CLIENT_STATISTICS|INDEX_STATISTICS|TABLE_STATISTICS|THREAD_STATISTICS|USER_STATISTICS]

These commands are another way to display the information you can get from the INFORMATION_SCHEMA tables. The commands accept WHERE clauses. They also accept but ignore LIKE clauses.

TODO

This feature actually contains functionality to flush/rotate the slow query log as well. This should be moved to the slow-query-log feature.

 
percona-server/features/userstatv2.txt · Last modified: 2011/07/17 21:05 (external edit)
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Contact Us 24 Hours A Day
Support Contact us 24×7
Emergency? Contact us for help now!
Sales North America (888) 316-9775 or
(208) 473-2904
Sales
Europe
+44-208-133-0309
Sales Latin America +54-0800-666-3243 (Arg.)
+55-0800-020-4918 (Brazil)
Training (855) 55TRAIN or
(925) 271-5054
Share This
]]> ]]>