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.

CampoTipoNote
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 doubleIl numero cumulativo di secondi duranti i quali vi è stata una attività sulle connessioni con questo client.
CPU_TIME doubleIl 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.

CampoTipoNote
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 doubleIl numero cumulativo di secondi in cui vi è stata un'attività sulle connessioni di questo utente.
CPU_TIME doubleIl 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.

FieldTypeNotes
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.

FieldTypeNotes
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)

Commenti

Sto caricando i commenti......