首先可以看出,我们这几个字段可以分别存储在差异的区域。这也赋予了MPP架构可以随意扩展字段。假如mysql行存储必要扩展字段,他的数据存储是离散的,不是在同一个数据块中。这其实也会增加磁盘扫描数。
那我们可以思考 下面sql的实验逻辑select name form table where birthday=‘27-1-1978’ and name like ‘F%’ 。首先他会去磁盘区域1扫描name列。找出2条符合查询条件的数据 rowId 为2和3 集合数据A。再去磁盘区域2扫描birthday得到rowId为2的集合数据B。那我们终极去交集得到集合为2的rowId,那么我们再A中拿到name字段。 思考: 那我们再进阶思考一下,我们再查找birthday='27-1-1978’时可不可以进行优化,来更高的提升查询性能?答案就是排序。假如Birthday 字段范例界说为date,且不绝地对他进行排序。那么我们是不是可以更快的找到相应的数据。这也是绝大多少MPP架构对数据进行预处理的一种方式,来提高查询服从。因此在设计时字段范例选择也是相称重要的。
那我们再思考一个sql。select count(1) from table where Hobbies=‘archery’ 假如是mysql,那是不是必要去全表扫描,然后再汇总得到结果。然而现在,你可以看到只需统计rowId数目即可得出终极结果。这速度是否让你想到一个词‘遥遥领先’。这就是为什么说MPP架构的数据库非常善于于聚合查询的缘故原由。
数据压缩