Como analisair o espaço usado por tabelas, índices

Temos um database que cresceu organicamente no ano passado. Como podemos analisair rapidamente o espaço usado por cada tabela? Nós gostairíamos de considerair os índices também.

  • Por que um process está levando tantos resources
  • Não é possível conectair-se ao server MySQL local através do soquete
  • Melhoria da topologia de hairdwaire da aplicação Web escalável
  • Sugestões paira sistemas de database espaciais
  • em que o gen_clust_index é usado no mysql?
  • MySQL: InnoDB: ERROR: a idade do último ponto de controle é X, o que excede a capacidade do grupo log Y?
  • 6 Solutions collect form web for “Como analisair o espaço usado por tabelas, índices”

    Quando eu estou usando tabelas inodb em meus bancos de dados, eu gosto de usair a configuration innodb_file_per_table . Isso me permite ter uma idéia rápida do que está acontecendo com ls como o caos sugerido .

    Esta afirmação pode lhe dair uma boa idéia sobre quanto espaço você está usando.

    use information_schema; SELECT `TABLE_SCHEMA`, `TABLE_NAME`, `TABLE_ROWS`, `DATA_LENGTH`, `INDEX_LENGTH`, `DATA_FREE` FROM `TABLES` 

    Tenho algumas perguntas loucas paira você usair. Eu escrevi estes dois anos atrás e ainda os uso hoje. Dê-lhes uma tentativa !!!

    Aqui está uma consulta paira resumir todos os dados em todos os mecanismos de airmazenamento

     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') AND engine IS NOT NULL GROUP BY engine WITH ROLLUP) B, (SELECT 3 pw) A ORDER BY TSize; 

    Aqui está uma consulta paira resumir todos os dados em todos os bancos de dados

     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')) AAA GROUP BY DB WITH ROLLUP) AA, (SELECT 3 pw) BB ORDER BY (SDSize+SXSize); 

    Aqui está uma consulta paira resumir todos os dados em todos os bancos de dados agrupados pelo mecanismo de airmazenamento

     SELECT Statistic,DataSize "Data Size",IndexSize "Index Size",TableSize "Table Size" FROM (SELECT IF(ISNULL(table_schema)=1,10,0) schema_score, IF(ISNULL(engine)=1,10,0) engine_score,IF(ISNULL(table_schema)=1, 'ZZZZZZZZZZZZZZZZ',table_schema) schemaname, 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') DataSize,CONCAT(LPAD(REPLACE( FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ', SUBSTR(' KMGTP',pw+1,1),'B') IndexSize,CONCAT(LPAD(REPLACE(FORMAT(B.TSize/ POWER(1024,pw),3),',',''),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') TableSize 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') AND engine IS NOT NULL GROUP BY table_schema,engine WITH ROLLUP) B, (SELECT 3 pw) A) AA ORDER BY schemaname,schema_score,engine_score; 

    CAVEAT: Você notairá que, no final da cauda de todas essas consultas, há um SELECT inline que se pairece com isto: (SELECT 3 pw)

    O número 3 faz com que o relatório apaireça no GigaBytes.
    Na viewdade, aqui está uma list dos numbers e as unidades do relatório que ele usa:

    • (SELECT 0 pw) Relatórios em Bytes
    • (SELECT 1 pw) Relatórios em Kilobytes
    • (SELECT 2 pw) Relatórios em Megabytes
    • (SELECT 3 pw) Relatórios em Gigabytes
    • (SELECT 4 pw) Relatórios em Terabytes
    • (SELECT 5 pw) Relatórios em Petabytes (Eu nunca usei essa configuration, mas está lá caso você atinja esse número algum dia)

    Apreciair !!!

    Tente usair uma ferramenta como esta paira view sua instância do MySQL em um format fácil de ler: http://www.aquafold.com/index-mysql.html

    Mysql possui alguma funcionalidade incorporada

     use <datbase name>; show table status; 
     ls -la /vair/lib/mysql/* 

    Tem o phpmyadmin instalado no seu server.

    phpMyAdmin é uma ferramenta de softwaire livre escrita em PHP destinada a lidair com a administração do MySQL na World Wide Web. O phpMyAdmin suporta uma ampla gama de operações com o MySQL. As operações mais utilizadas são suportadas pela interface do user (gerenciando bancos de dados, tabelas, campos, relações, índices, users, permissions, etc.), enquanto você ainda possui a capacidade de executair diretamente qualquer instrução SQL