The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Вычисление размера таблиц MySQL
Запрос для расчета размера таблиц начиная с MySQL 5.0:

use information_schema;
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 TABLES ORDER BY data_length+index_length DESC LIMIT 10;


| concat(table_schema,'.',table_name) | rows   | DATA   | idx    | total_size | idxfrac |
| art87.link_out87                    | 37.25M | 14.83G | 14.17G | 29.00G     |    0.96 |
#
| art87.article87                     | 12.67M | 15.83G | 4.79G  | 20.62G     |    0.30 |


Определение числа таблиц, суммарного размера строк, данных и индексов:

  SELECT count(*) TABLES,
       concat(round(sum(table_rows)/1000000,2),'M') rows,
       concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,
       concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,
       concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,
       round(sum(index_length)/sum(data_length),2) idxfrac
       FROM information_schema.TABLES;

   | TABLES| rows        | DATA    | idx        | total_size | idxfrac |
   |   1538 | 1623.91M | 314.00G | 36.86G | 350.85G    |    0.12  |


После "FROM information_schema.TABLES" можно добавить дополнительный фильтр, 
например вывести информацию только для таблиц performance_log:

   ... WHERE  table_name LIKE "%performance_log%";

Определение самых больших таблиц в БД:

   SELECT
        count(*) TABLES,
        table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows,
        concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,
        concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,
        concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,
        round(sum(index_length)/sum(data_length),2) idxfrac
        FROM information_schema.TABLES
        GROUP BY table_schema
        ORDER BY sum(data_length+index_length) DESC LIMIT 10;

   |TABLES| table_schema | rows  | DATA  | idx   | total_size | idxfrac |
   |     48  | cacti               | 0.01M | 0.00G | 0.00G | 0.00G      |    0.72 |
   |     17  | mysql              | 0.00M | 0.00G | 0.00G | 0.00G      |    0.18 |


Объем данных в разрезе типа хранилища:

   SELECT engine,
        count(*) TABLES,
        concat(round(sum(table_rows)/1000000,2),'M') rows,
        concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,
        concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,
        concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,
       round(sum(index_length)/sum(data_length),2) idxfrac
       FROM information_schema.TABLES
       GROUP BY engine
       ORDER BY sum(data_length+index_length) DESC LIMIT 10;

   | engine      | TABLES | rows     | DATA     | idx       | total_size | idxfrac |
   | MyISAM     |   1243 | 941.06M | 244.09G | 4.37G   | 248.47G  |    0.02 |
   | InnoDB      |    280  | 682.82M | 63.91G   | 32.49G | 96.40G    |    0.51 |
   | MRG_MyISAM|  1  | 13.66M   | 6.01G     | 0.00G   | 6.01G      |    0.00 |
   | MEMORY   |     14  | 0.00M    | 0.00G     | 0.00G   | 0.00G      |    NULL |
 
Ключи: mysql, database, size
Раздел:    Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL

Обсуждение [ RSS ]
  • 1, Heckfy (?), 15:12, 06/02/2008 [ответить]  
  • +/
    Думаю, так будет красивее:

    use information_schema;
    SELECT
    concat(table_schema,'.',table_name) AS sql_table,
    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 TABLES
    ORDER BY data_length+index_length DESC
    LIMIT 10;

    +------------------------+--------+--------+--------+------------+---------+
    | sql_table              | rows   | DATA   | idx    | total_size | idxfrac |
    +------------------------+--------+--------+--------+------------+---------+
    | dev.event_logs_backup2 | 75.83M | 14.39G | 13.31G | 27.70G     |    0.93 |
    | dev.event_logs_backup  | 26.90M | 4.48G  | 4.31G  | 8.79G      |    0.96 |
    | dev.event_logs         | 1.20M  | 0.20G  | 0.14G  | 0.34G      |    0.69 |
    | mysql.help_topic       | 0.00M  | 0.00G  | 0.00G  | 0.00G      |    0.05 |
    | mysql.help_keyword     | 0.00M  | 0.00G  | 0.00G  | 0.00G      |    0.18 |
    | mysql.proc             | 0.00M  | 0.00G  | 0.00G  | 0.00G      |    0.04 |
    | mysql.help_category    | 0.00M  | 0.00G  | 0.00G  | 0.00G      |    0.15 |
    | mysql.help_relation    | 0.00M  | 0.00G  | 0.00G  | 0.00G      |    2.11 |
    +------------------------+--------+--------+--------+------------+---------+
    10 rows in set (1.23 sec)

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру