我的数据库有问题,我收集转储到其他数据库分析它,我已经创建表参考日期检查所以当我看到我的界面phpmyadmin时,我看到我的表大小等于16Kio两个日期与id!
我在这里看到了文件http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html 并且日期类型大小是3个字节...差异太大,我对所有数据都有问题! 一个转储的原始转储大小是1.9Mo,在我的数据库中,大小是5Mo!
我不知道问题出在哪里?
答案 0 :(得分:2)
没有问题,
MySQL中的数据库不仅是数据,还必须考虑使用的空间:
每种字段类型都有不同的存储方式。
转储文件仅包含SQL插入的表定义和数据。
检查数据库结构和样本转储:
您的数据库存储为InnoDB
UTF8
,您的转储使用MyISAM
与latin1
存储,这是一个很大的区别,因为UTF字符集会占用更多空间存储字符串/ varchar数据和InnoDB使用额外的空间,因为该表实际存储在InnoDB文件中。
我选择转储文件和一个表,然后使用带有UTF8的InnoDB创建相同的表,请参阅大小差异:
mysql> call tools.sp_status(database());
+---------------------+--------+-------+---------+-------------------+
| Table Name | Engine | Rows | Size | Collation |
+---------------------+--------+-------+---------+-------------------+
| BDDJoueurs | MyISAM | 33981 | 2.47 Mb | latin1_swedish_ci |
| BDDJoueurs_unicode | InnoDB | 33981 | 6.03 Mb | utf8_unicode_ci |
+---------------------+--------+-------+---------+-------------------+
我认为您正在使用InnoDB进行分析,将整合数据更改为MyISAM可能是一个好主意,可以保留您的字符集。
注意:我使用自定义show table status。
答案 1 :(得分:0)
表大小不是行数的简单倍数,更多与页面大小有关。 16KB听起来适合单个页面(参见mysql documentation)。你的两行不到1页,所以1页就够了。
索引,元数据等也有其他开销。
BTW什么是Mo
,Kio
?