我使用MariaDB 10.1.16
这次我做的很简单。
从oracle 中选择数据并生成 csv文件 使用 load infile data 命令在MariaDB中加载。 数据库引擎是InnoDB。
数据行计数为6497641。 两个表都创建相同的查询。 PK是auto_increment和int type;
由......创建的行
mysql.innodb_table_stats中的内容如下。
我想知道为什么文件的大小不同。
谢谢。答案 0 :(得分:1)
行的顺序可以产生很大的不同。如果数据在插入时按PRIMARY KEY
排序,则块将几乎已满。如果行是随机排序的,则最终结果将是大约69%已满的块。这是插入BTree的本质。
n_rows
只是一个近似值,因此计数不一致。我认为另一对值是16KB块的确切数量。
由于PK与数据“聚集”,因此clustered_index_size
是数据的大小,加上PK上BTree的一些开销。加上很多开销和/或浪费的空间(如上所述)。