这个职位说:
如果您使用XtraDB在Percona上运行Innodb插件,您将受益于一种很好的新特性--通过排序而不是通过插入来构建索引
但是我找不到这方面的任何信息。我希望能够重新组织表的物理布局,类似于Postgre集群命令或MyISAM "alter . order“。例如,表“post”有数以百万行为随机插入顺序的行,大多数查询使用"where userid =“,我希望该表在磁盘上将属于一个用户的行物理地分开,这样普通的查询就需要低IO。有可能用XtraDB吗?
发布于 2014-03-30 16:15:07
关于博客帖子的澄清
您所看到的基本特性是fast index creation
。这一特性加快了从创建到InnoDB表的辅助索引的速度,但它仅在非常特殊的情况下使用。例如,在OPTIMIZE TABLE
时不使用该特性,因此可以通过先删除索引,然后运行OPTIMIZE TABLE
,然后用fast index creation
重新创建索引(关于这就是你联系的那个帖子)来显著加快速度。
某些情况下的自动化,可以通过像上面这样的手动使用这个特性来改进,添加到Percona中作为一个名为expand_fast_index_creation
的系统变量。如果激活,服务器不仅应该在非常特定的情况下使用快速索引创建,而且在所有情况下都可能有所帮助,例如OPTIMIZE TABLE
--链接博客文章中提到的问题。
关于你的问题
您的问题实际上是,是否可以按照自定义顺序保存InnoDB表,以便通过利用磁盘上的位置来加快特定类型的查询。
这是不可能的InnoDB行根据聚集索引(本质上是主键)保存在页面中。行/页可能是无序排列的,因此可以对其进行OPTIMIZE TABLE
InnoDB表。使用此命令,表实际上是按主键顺序重新创建的。这允许在相同或相邻的页面上收集主键本地行。
这就是你能强迫InnoDB做的所有事情。您可以将手册中的另一页聚类索引手册作为明确的答案是,这是不可能的("ORDER对InnoDB表没有意义,因为InnoDB总是根据聚集索引对表行进行排序“)。和同样的问题在dba.stackexchange上可能会让你感兴趣阅读。
https://stackoverflow.com/questions/22745065
复制相似问题