我想从mysql切换到mariadb,为此,我导出了旧数据库并将它们导入到一个新的mariadb服务器,现在我遇到了一个问题,即新导入的数据库比原来的要小。
我做了以下工作:
如果在想查看数据库有多大,我会看到以下内容:
原始mysql服务器上的:
mysql>通过table_schema从information_schema.TABLES组中选择table_schema“数据库”、sum(data_length + index_length)/1024/1024“MB大小”;
数据库大小( MB )
DB-1 \x{e76f} 0.40625000
DB-2 \x{e76f} 4.09375000 x
DB-3 \x{e76f} 506.60937500 x
设置6行(0.90秒)
如果我现在在maraidb主机上做同样的操作::
MariaDB (无)>选择table_schema“数据库”、sum(data_length + index_length)/1024/1024 /1024/1024“MB大小”,由table_schema从information_schema.TABLES组中选择;
数据库大小( MB )
DB-1 \x{e76f} 0.39062500 x
DB-2 \x{e76f} 3.03125000 x
DB-3 \x{e76f} 416.39062500 x
设置6行(0.09秒)
这种区别从何而来?这是我的失败吗?
发布于 2015-10-26 19:51:47
MySQL和MariaDB存储InnoDB和MySIAM (您可能使用的引擎之一)是相同的。此外,您可以通过在MariaDB的基础上踩下它来安装MySQL,它将与相同的文件数据库一起工作。
您的问题很可能来自这样一个事实:当您从头创建一个表并插入所有行时,没有任何碎片或空间浪费。当您有一个活动服务器时,当您删除行时,数据变得有点零碎,有时它甚至存储“空”空间,并且不将其返回给OS (InnoDB)。
尝试这样做,在MySQL中创建一个新的数据库作为DB1-测试并将转储导入其中,然后比较DB1-测试大小与MariaDB-DB1的大小,并且应该是一致的。
发布于 2015-10-26 19:36:52
您的表在MySQL服务器上没有优化。因此,MySQL免费,永不未使用的磁盘空间。释放它的唯一方法是删除并创建一个表。这就是优化所做的。另一件事是选项“每个表一个文件”。如果它将MySQL设置为每个表上的文件,并且有可能通过优化释放磁盘空间,那么您只有一个大文件。
https://stackoverflow.com/questions/33354062
复制相似问题