mysql – InnoDB磁盘使用开销
发布时间:2020-12-11 23:48:46 所属栏目:MySql教程 来源:网络整理
导读:我有一个表,其中包含两个32位整数.这两个整数用于创建聚簇索引.用于创建表的SQL如下, CREATE TABLE `a` ( `var1` int(10) unsigned NOT NULL,`var2` int(10) unsigned NOT NULL,PRIMARY KEY (`var2`,`var1`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=ut
我有一个表,其中包含两个32位整数.这两个整数用于创建聚簇索引.用于创建表的SQL如下,
>此表中有6921338行(使用SELECT COUNT(*)FROM a检索) 根据我的计算,每行使用51.8个字节.我知道InnoDB有storing rows的开销.但是,使用MySQL网站,我计算出行大小应该是26个字节(5个字节的头,8个字节的整数,6个字节的事务id和7个字节的滚动指针字段) . 我正在尝试减少行大小,因为该表可能会填充多达160亿条记录. 我的计算错过了什么?如何优化表格以减少占用空间?或者我应该切换到不同的数据库引擎? 更新 我为这个表做的查询;
最佳答案
这是因为您创建的索引也占用了空间.对于InnoDB中的聚簇索引,行数据实际存储在索引叶节点内,因此当使用索引时,索引不指向行,而是指向包含行数据的索引叶节点与PKEY.
这导致存储量大得多. Take a look here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |