Statistiche Utente
MariaDB starting with 5.2.0
Le statistiche utente sono state introdotte in MariaDB 5.2.0
In MariaDB, l'implementazione delle Statistiche Utente si basa sulla patch userstatv2 patch di Percona e Ourdelta. Il codice originale è stato sviluppato da Google (dal team di Mark Callaghan), ed è stato modificato da Percona, Ourdelta e Weldon Whipple. L'implementazione di MariaDB fornisce le stesse funzionalità della patch userstatv2, ma con diversi cambiamenti che la rendono più performante e meglio integrata nell'infrastruttura di MariaDB.
Questa caratteristica aggiunge alcune tabelle all'information_schema e diversi nuovi comandi FLUSH
e SHOW
. Tali tabelle e comandi servono per monitorare meglio le attività del server e per identificare le fonti del carico di lavoro dei database.
Come funziona
Userstat mantiene diverse tabelle hash in memoria. Tutte le variabili sono incrementate durante l'esecuzione delle query. Alla fine di ogni istruzione, vengono aggiornati i valori globali.
Abilitare userstat
Per default, le statistiche non sono attive. Questo è stato deciso per evitare che il calcolo delle statistiche provochi un carico di lavoro aggiuntivo sul server, a meno che non lo si desideri.
Per abilitare le statistiche, si aggiunga la seguente riga al file my.cnf, nella sezione [mysqld]
(o lo si utilizzi da riga di comando, all'avvio del server):
userstat = 1
Comandi
Userstat fornisce i seguenti comandi FLUSH
e SHOW
.
Comandi FLUSH
I seguenti comandi servono per eliminare le informazioni immagazzinate nelle singole tabelle dell'information_schema:
FLUSH TABLE_STATISTICS FLUSH INDEX_STATISTICS FLUSH USER_STATISTICS FLUSH CLIENT_STATISTICS
Comandi SHOW
I seguenti comandi sono un altro modo per mostrare il contenuto delle tabelle dell'information_schema. La clausola WHERE è accettata. La clausola LIKE è accettata ma viene ignorata.
SHOW CLIENT_STATISTICS SHOW USER_STATISTICS SHOW INDEX_STATISTICS SHOW TABLE_STATISTICS
Tabelle dell'information_schema
Le statistiche utente aggiungono le seguenti tabelle nel database INFORMATION_SCHEMA
:
CLIENT_STATISTICS
Questa tabella contiene le statistiche sulle connessioni dei client.
Campo | Tipo | Note |
---|---|---|
CLIENT
| varchar(64) | L'indirizzo IP o il nome host da cui è partita la connessione. |
TOTAL_CONNECTIONS
| int(21) | Il numero di connessioni create per questo client. |
CONCURRENT_CONNECTIONS
| int(21) | Il numero di connessioni concorrenti per questo client. |
CONNECTED_TIME
| int(21) | Il numero cumulativo di secondi trascorsi mentre esistevano connessioni con questo client. |
BUSY_TIME
| double | Il numero cumulativo di secondi duranti i quali vi è stata una attività sulle connessioni con questo client. |
CPU_TIME
| double | Il tempo CPU cumulativo trascorso mentre si servivano connessioni con questo client. Si noti che questo numero potrebbe essere errato su un sistema SMP, se durante l'esecuzione della query vi è stata una migrazione di CPU. |
BYTES_RECEIVED
| int(21) | Il numero di byte ricevuti dalle connessioni con questo client. |
BYTES_SENT
| int(21) | Il numero di client inviati alle connessioni con questo client. |
BINLOG_BYTES_WRITTEN
| int(21) | Il numero di byte scritti nel binary log dalle connessioni di questo client. |
ROWS_READ
| int(21) | Il numero di righe lette dalle connessioni di questo client. |
ROWS_SENT
| int(21) | Il numero di righe inviate dalle connessioni di questo client. |
ROWS_DELETED
| int(21) | Il numero di righe cancellate dalle connessioni di questo client. |
ROWS_INSERTED
| int(21) | Il numero di righe inserite dalle connessioni di questo client. |
ROWS_UPDATED
| int(21) | Il numero di righe aggiornate dalle connessioni di questo client |
SELECT_COMMANDS
| int(21) | Il numero di comandi SELECT eseguiti dalle connessioni di questo client. |
UPDATE_COMMANDS
| int(21) | Il numero di comandi UPDATE eseguiti dalle connessioni di questo client. |
OTHER_COMMANDS
| int(21) | Il numero di altri comandi eseguiti dalle connessioni di questo client. |
COMMIT_TRANSACTIONS
| int(21) | Il numero di comandi COMMIT eseguiti dalle connessioni di questo client. |
ROLLBACK_TRANSACTIONS
| int(21) | Il numero di comandi ROLLBACK eseguiti dalle connessioni di questo client. |
DENIED_CONNECTIONS
| int(21) | Il numero di connessioni negate a questo client. |
LOST_CONNECTIONS
| int(21) | Il numero di connessioni a questo client terminate in modo anomalo. |
ACCESS_DENIED
| int(21) | Quante volte questo client ha lanciato comandi che sono stati negati. |
EMPTY_QUERIES
| int(21) | Quante volte questo client ha inviato query vuote al server. |
Esempio
MariaDB [(none)]> SELECT * FROM INFORMATION_SCHEMA.CLIENT_STATISTICS\G *************************** 1. row *************************** CLIENT: localhost TOTAL_CONNECTIONS: 3 CONCURRENT_CONNECTIONS: 0 CONNECTED_TIME: 4883 BUSY_TIME: 0.009722 CPU_TIME: 0.0102131 BYTES_RECEIVED: 841 BYTES_SENT: 13897 BINLOG_BYTES_WRITTEN: 0 ROWS_READ: 0 ROWS_SENT: 214 ROWS_DELETED: 0 ROWS_INSERTED: 207 ROWS_UPDATED: 0 SELECT_COMMANDS: 10 UPDATE_COMMANDS: 0 OTHER_COMMANDS: 13 COMMIT_TRANSACTIONS: 0 ROLLBACK_TRANSACTIONS: 0 DENIED_CONNECTIONS: 0 LOST_CONNECTIONS: 0 ACCESS_DENIED: 0 EMPTY_QUERIES: 1 1 row in set (0.00 sec)
USER_STATISTICS
Questa tabella contiene le statistiche sull'attività degli utenti. E' possibile utilizzarla per capire, ad esempio, quale utente causa il maggior carico di lavoro e quali utenti stanno abusando del sistema. Inoltre si può usarla per sapere quanto si è vicini al limite delle capacità del server.
Campo | Tipo | Note |
---|---|---|
USER
| varchar(48) | Il nome utente. Se non vi è alcun nome utente (per esempio è il caso dei thread SQL degli slave), compare '#mysql_system_user#'. |
TOTAL_CONNECTIONS
| int(21) | Il numero di connessioni create da questo utente. |
CONCURRENT_CONNECTIONS
| int(21) | Il numero di connessioni concorrenti di questo utente. |
CONNECTED_TIME
| int(21) | Il numero cumulativo di secondi trascorsi mentre vi erano connessioni verso questo utente. |
BUSY_TIME
| double | Il numero cumulativo di secondi in cui vi è stata un'attività sulle connessioni di questo utente. |
CPU_TIME
| double | Il tempo CPU cumulativo trascorso mentre le connessioni di questo utente venivano servite. |
BYTES_RECEIVED
| int(21) | Il numero di byte ricevuti dalle connessioni di questo utente. |
BYTES_SENT
| int(21) | Il numero di byte inviati alle connessioni di questo utente. |
BINLOG_BYTES_WRITTEN
| int(21) | Il numero di byte scritti nel log binario dalle connessioni di questo utente. |
ROWS_READ
| int(21) | Il numero di righe lette dalle connessioni di questo utente. |
ROWS_SENT
| int(21) | Il numero di righe inviate dalle connessioni di questo utente. |
ROWS_DELETED
| int(21) | Il numero di righe eliminate dalle connessioni di questo utente. |
ROWS_INSERTED
| int(21) | Il numero di righe inserite dalle connessioni di questo utente. |
ROWS_UPDATED
| int(21) | Il numero di righe modificate dalle connessioni di questo utente. |
SELECT_COMMANDS
| int(21) | The number of SELECT commands executed from this user's connections. |
UPDATE_COMMANDS
| int(21) | The number of UPDATE commands executed from this user's connections. |
OTHER_COMMANDS
| int(21) | The number of other commands executed from this user's connections. |
COMMIT_TRANSACTIONS
| int(21) | The number of COMMIT commands issued by this user's connections. |
ROLLBACK_TRANSACTIONS
| int(21) | The number of ROLLBACK commands issued by this user's connections. |
DENIED_CONNECTIONS
| int(21) | The number of connections denied to this user. |
LOST_CONNECTIONS
| int(21) | The number of this user's connections that were terminated uncleanly. |
ACCESS_DENIED
| int(21) | The number of times this user's connections issued commands that were denied. |
EMPTY_QUERIES
| int(21) | The number of times this user's connections sent empty queries to the server. |
Example
MariaDB [(none)]> SELECT * FROM INFORMATION_SCHEMA.USER_STATISTICS\G *************************** 1. row *************************** USER: root TOTAL_CONNECTIONS: 1 CONCURRENT_CONNECTIONS: 0 CONNECTED_TIME: 297 BUSY_TIME: 0.001725 CPU_TIME: 0.001982 BYTES_RECEIVED: 388 BYTES_SENT: 2327 BINLOG_BYTES_WRITTEN: 0 ROWS_READ: 0 ROWS_SENT: 12 ROWS_DELETED: 0 ROWS_INSERTED: 13 ROWS_UPDATED: 0 SELECT_COMMANDS: 4 UPDATE_COMMANDS: 0 OTHER_COMMANDS: 3 COMMIT_TRANSACTIONS: 0 ROLLBACK_TRANSACTIONS: 0 DENIED_CONNECTIONS: 0 LOST_CONNECTIONS: 0 ACCESS_DENIED: 0 EMPTY_QUERIES: 1
INDEX_STATISTICS
This table shows statistics on index usage and makes it possible to do such things as locating unused indexes and generating the commands to remove them.
Field | Type | Notes |
---|---|---|
TABLE_SCHEMA
| varchar(192) | The schema (database) name. |
TABLE_NAME
| varchar(192) | The table name. |
INDEX_NAME
| varchar(192) | The index name (as visible in SHOW CREATE TABLE
). |
ROWS_READ
| int(21) | The number of rows read from this index. |
Example
SELECT * FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME = "author"; +--------------+------------+------------+-----------+ | TABLE_SCHEMA | TABLE_NAME | INDEX_NAME | ROWS_READ | +--------------+------------+------------+-----------+ | books | author | by_name | 15 | +--------------+------------+------------+-----------+ 1 row in set (0.00 sec)
TABLE_STATISTICS
This table is similar to the INDEX_STATISTICS
table. It shows statistics on table usage.
Field | Type | Notes |
---|---|---|
TABLE_SCHEMA
| varchar(192) | The schema (database) name. |
TABLE_NAME
| varchar(192) | The table name. |
ROWS_READ
| int(21) | The number of rows read from the table. |
ROWS_CHANGED
| int(21) | The number of rows changed in the table. |
ROWS_CHANGED_X_INDEXES
| int(21) | The number of rows changed in the table, multiplied by the number of indexes changed. |
Example
MariaDB [(none)]> SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='user'; +--------------+------------+-----------+--------------+------------------------+ | TABLE_SCHEMA | TABLE_NAME | ROWS_READ | ROWS_CHANGED | ROWS_CHANGED_X_INDEXES | +--------------+------------+-----------+--------------+------------------------+ | mysql | user | 5 | 2 | 2 | +--------------+------------+-----------+--------------+------------------------+ 1 row in set (0.00 sec)