Queste sono alcune query di mysql che possono essere utili per esaminare il database e le tabelle contenute al suo interno
Le query presenti nell’articolo
- Clear
- Numero di righe
- Analizzare una tabella
- Controllare le dimensioni di tabella e DB
- Pulire i BinLog
Numero di righe
Contiamo il numero di righe presenti in una tabella. Ottengo tutte le righe presenti
SELECT COUNT(*) FROM <table>;
ID | VAL |
---|---|
1 | 1 |
2 | 2 |
3 | 2 |
4 | null |
5 | 3 |
6 | 4 |
7 | null |
8 | 5 |
9 | 5 |
Passando a COUNT
il nome di una colonna, ottengo come risultato tutte le righe NO-NULL ovvero tutte le righe che hanno un valore all’interno di quella colonna.
Se invece dichiaro un WHERE
posso selezionare quante righe hanno lo stesso valore.
SELECT COUNT(val) FROM <table>;
SELECT COUNT(val) FROM <table> WHERE val=2;
controllare le Dimensioni delle tabelle e dei database
Con questa query andiamo ad analizzare il peso di una singola tabella all’interno di un database. Posso elencare le tabelle e posso scegliere il database.
SELECT table_name "Table", ROUND(((data_length + index_length) / 1024 / 1024), 2) "Size (MB)" FROM information_schema.tables WHERE table_schema = "<database>"
AND table_name = "<table>";
Posso visualizzare l’elenco delle tabelle di un database, con il loro singolo peso.
SELECT table_name "Table", ROUND(((data_length + index_length) / 1024 / 1024), 2) "Size (MB)" FROM information_schema.tables WHERE table_schema = "<database>" ORDER BY (data_length + index_length) DESC;
Posso ottenere un risultato simile, ma con dati aggregati per database, quindi il peso del database complessivo con una query simile.
SELECT
table_schema "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
GROUP BY table_schema;
Analizzare una tabella
Analizzare una tabella significa capire quali sono i campi da cui è composta, ed crearne le statistiche per information_schema.
DESCRIBE <table>;
ANALYZE <table>;
Pulire i Bin Log
I bin log sono dei file che vengono creati da MySql di default. Servono per registrare tutte le operazioni effettuate su Mysql e possono tornare utili in caso di replication.
Possono tranquillamente essere cancellati direttamente attraverso Mysql con una query.
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 3 DAY;
PURGE MASTER LOGS BEFORE '2023-06-25 00:00:00';
Con la prima query eliminiamo i file precedenti a 3 giorni, con la seconda eliminiamo tutti i log precedenti alla mezzanotte del 25 giugno 2023
Clear
Pulire lo schermo della console MySql puo tornare utile per riuscire a leggere un risultato in modo pulito.
In questo caso abbiamo sia una query da poter eseguire, anche se piu che query è un comando, oppure possiamo richiamare tutto semplicemente con una combinazione di tasti.
La combinazione di tasti da utilizzare è CTRL+L mentre il comando da lanciare dalla CLI è
system clear;
system cls;