Всем привет, кто-нибудь знает, как оценить размер одной таблицы mysql? Я имею в виду, что я планирую сделать резервную копию всей таблицы mysql на всем моем сервере, но я хотел бы знать, насколько большой должна быть каждая таблица дампа без физического дампа. Есть какая-то команда, которая разрешает это делать? Я использую mysql 5.1 на debian 6 Cheers
Как видно Вот, вы можете запускать эти запросы в своей базе данных (были украдены из комментариев на странице, а затем изменены).
SELECT table_schema 'database',
concat( round( sum( data_length + index_length ) / ( 1024 *1024 ) , 2 ) , 'M' ) size
FROM information_schema.TABLES
WHERE ENGINE=('MyISAM' || 'InnoDB' )
GROUP BY table_schema;
SELECT concat( table_schema, '.', table_name ) table_name,
concat( round( data_length / ( 1024 *1024 ) , 2 ) , 'M' ) data_length,
concat( round( index_length / ( 1024 *1024 ) , 2 ) , 'M' ) index_length,
concat( round( round( data_length + index_length ) / ( 1024 *1024 ) , 2 ) , 'M' ) total_size
FROM information_schema.TABLES
ORDER BY ( data_length + index_length ) DESC;
Поскольку mysqldump является логическим представлением базы данных, вы найдете только фактические данные. Индексы никогда не хранятся в mysqldump, но определение таблицы будет указывать, как заполнять индексы.
Трудно выбрать точное число для mysqldump из-за того, что записано в mysqldump:
То, что вы можете измерить как фактор, - это просто сумма data_lengths:
SELECT SUM(data_length)/POWER(1024,2) TotalDB_MB
FROM information_schema.tables;
Чтобы увидеть сумму по базе данных и общую сумму:
SELECT table_schema,SUM(data_length)/POWER(1024,2) DB_MB
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','performance_schema','mysql')
GROUP BY table_schema
WITH ROLLUP;
Чтобы просмотреть промежуточные итоги каждой таблицы и баз данных:
SELECT table_schema,table_name,SUM(data_length)/POWER(1024,2) DB_MB
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','performance_schema','mysql')
GROUP BY table_schema,table_name
WITH ROLLUP;
Вы можете использовать следующие
POWER(1024,1)
отчеты в КБPOWER(1024,2)
отчеты в МБPOWER(1024,3)
отчеты в ГБPOWER(1024,4)
отчеты по туберкулезуPOWER(1024,5)
отчеты в PB Вы можете использовать эту формулу
Окончательная формула приблизительного размера mysqldump
CharactersForSQLPerTable X NumberOfTables
+ Characters for "INSERT INTO tblname VALUES "
+ TotalDB_MB