Ciao, sono nuovo ai database. Sto lavorando su un enorme database e sto cercando di chiarire il caos. Voglio iniziare trovando le prime dieci tabelle che occupano la memoria più alta nell'intero database. Non posso andare trovando memoria di ogni tavolo poiché ci sono troppe tabelle. Ho bisogno dei primi 10 o 20 tavoli che occupino lo spazio massimo. Qualsiasi aiuto sarebbe molto apprezzato. Grazie.Come scoprire le tabelle che occupano la memoria massima nel database?
risposta
MyISAM richiede solo la memoria per i suoi indici
Per trovare i primi 10 tabelle MyISAM che possono utilizzare la maggior parte della memoria nel caso peggiore provare questo:
SELECT * FROM
(
SELECT table_schema,table_name,index_length
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')
ORDER BY index_length DESC
) LIMIT 10;
InnoDB occupa memoria per i suoi dati e gli indici
Per trovare i primi 10 tabelle InnoDB che possono utilizzare la maggior parte della memoria nel caso peggiore provare questo:
SELECT * FROM
(
SELECT table_schema,table_name,data_length+index_length tblsize
FROM information_schema.tables
WHERE engine='InnoDB'
ORDER BY index_length DESC
) LIMIT 10;
Ecco un altro display dei 50 tavoli per dimensione decrescente
SELECT * FROM
(SELECT TN TableName,LPAD(REPLACE(FORMAT(TS/POWER(1024,1),2),',',''),Z,' ') KB,
LPAD(REPLACE(FORMAT(TS/POWER(1024,2),2),',',''),Z,' ') MB,
LPAD(REPLACE(FORMAT(TS/POWER(1024,3),2),',',''),Z,' ') GB
FROM (SELECT CONCAT(table_schema,'.',table_name) TN,
(data_length+index_length) TS FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')
AND engine IS NOT NULL) A,(SELECT 13 Z) B ORDER BY TS DESC) MMM LIMIT 50;
Se siete interessati, ho le query che ti danno tutta la storia sul MySQL Instance
Questa query mostra la quantità di spazio su disco presa dal motore di archiviazione in GB
SELECT IFNULL(B.engine,'Total') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Data Size",
CONCAT(LPAD(REPLACE(FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Table Size"
FROM (SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,(SELECT 3 pw) A ORDER BY TSize;
Questa query mostra la quantità di spazio su disco occupato dal database in GB
SELECT DBName,CONCAT(LPAD(FORMAT(SDSize/POWER(1024,pw),3),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Data Size",CONCAT(LPAD(FORMAT(SXSize/
POWER(1024,pw),3),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "Index Size",
CONCAT(LPAD(FORMAT(STSize/POWER(1024,pw),3),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Total Size" FROM
(SELECT IFNULL(DB,'All Databases') DBName,SUM(DSize) SDSize,
SUM(XSize) SXSize,SUM(TSize) STSize FROM (SELECT table_schema DB,
data_length DSize,index_length XSize,data_length+index_length TSize
FROM information_schema.tables WHERE table_schema NOT IN
('mysql','information_schema','performance_schema')) AAA
GROUP BY DB WITH ROLLUP) AA,(SELECT 3 pw) BB ORDER BY (SDSize+SXSize);
Questa query mostra la quantità di spazio su disco occupato dal database dal motore di archiviazione in GB
SELECT IF(ISNULL(B.table_schema)+ISNULL(B.engine)=2,"Storage for All Databases",
IF(ISNULL(B.table_schema)+ISNULL(B.engine)=1,CONCAT("Storage for ",B.table_schema),
CONCAT(B.engine," Tables for ",B.table_schema))) Statistic,CONCAT(LPAD(REPLACE(
FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B')
"Data Size",CONCAT(LPAD(REPLACE(FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Index Size",CONCAT(LPAD(REPLACE(FORMAT(B.TSize/
POWER(1024,pw),3),',',''),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "Table Size"
FROM (SELECT table_schema,engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables WHERE
table_schema NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY table_schema,engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;
I tre domande precedenti ho postato ha una caratteristica comune: la subquery (SELECT 3 pw)
- Se si utilizza
(SELECT 0 pw)
, il report è in byte - Se si utilizza
(SELECT 1 pw)
, il report è in KiloBytes - Se si utilizza
(SELECT 2 pw)
, rapporto è in megabyte - Se si utilizza
(SELECT 3 pw)
, report è in gigabyte - Se si utilizza
(SELECT 4 pw)
, Relazione è in terabyte - Se si utilizza
(SELECT 5 pw)
, rapporto è in petabyte (Se avete bisogno questo, inserisci quel risultato per favore !!!)
Questo è fantastico !! Sei fantastico! Mi ha aiutato molto !! .. :) – Maddy
Dovresti pubblicare domande come questa in dba.stackexchange.com. Anch'io sono in quel forum. – RolandoMySQLDBA
Siete i benvenuti !!! – RolandoMySQLDBA
Forse qualcosa di simile:
SELECT CONCAT(table_schema, '.', table_name),
CONCAT(ROUND(table_rows/1000000, 2), 'M') rows,
CONCAT(ROUND(data_length/(1024 * 1024 * 1024), 2), 'G') DATA,
CONCAT(ROUND(index_length/(1024 * 1024 * 1024), 2), 'G') idx,
CONCAT(ROUND((data_length + index_length)/(1024 * 1024 * 1024), 2), 'G') total_size,
ROUND(index_length/data_length, 2) idxfrac
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC
LIMIT 10;
Riferimento here
Si potrebbe utilizzare SHOW TABLE STATUS per ottenere le dimensioni per ogni tabella.
Questa è la query che ho usato dopo aver letto tutte le tue risposte.
SELECT table_name,round((data_length+index_length)/(1024 * 1024 *1024),2) table_size
FROM information_schema.tables
ORDER BY data_length + index_length
DESC limit 10;
+1 per usare la mia risposta per formulare la tua – RolandoMySQLDBA
- 1. Come contare le tabelle vuote nel database?
- 2. Capacità massima memoria database SQLite
- 3. Elenco di tutte le tabelle nel database
- 4. Alter tutte le tabelle nel database
- 5. elenco di tutte le tabelle nel database
- 6. Artisan, la creazione di tabelle nel database
- 7. Come scoprire quali file occupano più spazio in git repo?
- 8. Come si può sapere quali tabelle occupano più spazio in un database di SQL Server 2005?
- 9. Come scoprire la struttura di un database PostgreSQL?
- 10. I membri della classe occupano memoria?
- 11. I riferimenti agli oggetti occupano memoria extra?
- 12. Come impostare la memoria massima di Redis?
- 13. Recupera un elenco di tutte le tabelle nel database
- 14. I campi dati SQLite null occupano memoria extra?
- 15. C'è un modo per scoprire le dimensioni/dimensioni delle tabelle del database?
- 16. registrazione 3 tabelle nel database SQLite
- 17. PostgreSQL nel database di memoria
- 18. query SQL che unisce le tabelle da diversi database FDB
- 19. Memoria massima raggiungibile .NET?
- 20. Individuare la dimensione massima delle stringhe per le chiavi nel database Redis
- 21. Come scoprire dove sta andando la mia memoria
- 22. SQL Server - Crea un singolo trigger che viene eseguito per TUTTE le tabelle nel database
- 23. Come scoprire la distanza tra le coordinate?
- 24. Dimensione massima del database SQLite in memoria di un'app Android?
- 25. PyTables che si occupano di dati con dimensioni molto più grandi delle dimensioni della memoria
- 26. Come precaricare le tabelle nel pool buffer INNODB con MySQL?
- 27. Come visualizzare le tabelle del database in postgresql usando pgAdmin?
- 28. mysql che separa le tabelle
- 29. Memoria massima che può essere allocata da un processo .NET
- 30. Funziona in modo interattivo con gli oggetti elenco che occupano enorme memoria
Vuoi consumo di memoria o spazio su disco ??? – RolandoMySQLDBA
Desidero spazio su disco e consumo di memoria. – Maddy