我有一个数据库,其整个大小为44 of,其中ibdata1为35 of。这是没有意义的,因为数据的大小不应该超过10 be。
我使用以下查询获取数据大小的必要值:
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 30;对如何清洁ibdata1有什么想法吗?为什么它会长这么多?
顺便说一下,我用innodb_file_per_table
发布于 2012-04-19 10:10:47
我最好的猜测是,在某个时候,它是如此之大。
ibdata1永远不会收缩,所以它将保持它的最大大小。也许在你做innodb_file_per_table之前,你已经有过几张桌子了,在那里很大。
我所知道的缩小它的唯一方法是做一个转储,删除文件(ibdata,iblog和所有.idb)并加载转储。
https://dba.stackexchange.com/questions/16747
复制相似问题