在关系型数据库中,会涉及到大量的查询操作,查询操作往往还涉及不同表之间的连接操作,而连接操作需要大量的IO开销,传统的数据库的查询优化都在顺序IO上优化,到闪存上,闪存的随机读和顺序读性能都很出色,那么面对随机读性能好的优势,在查询和连接索引上,数据库需要进行哪些优化,本章就对这个点进行优化。
1、数据库还有一个很重要的是页面布局的概念
指的是数据库的表中有不同的元组,这些元组的数据是一行一行显示的,但是存储的时候都是许多的元组存放在一个页的形式,在将这个页写入到闪存上,那么这个页中行组是如何组织的,这就是页面布局的概念。
2、传统的按照行存储的页面布局NSM和按照列存储的DSM
基本思想:
各自的优缺点
NSM的优点:行组中所有的数据都存在一个页中,当行组内多个属性进行查询操作的时候,只用设计到本个页的读取,性能好
NSM的缺点:在读取数据的时候,需要顺序的扫面每个元组,然后删选出需要的查询属性,当查询属性很少的时候,这个时候会消耗大量的带宽
DSM的优缺点
DSM的优点:支持大量的并发的用户查询,因为只用在特定的页中读取对应的属性即可,IO开销较小,而且对于同属性的数据,可以进行数据压缩,效果也比较好
DSM的缺点:需要存储元组的ID的额外的存储开销,以及执行连接操作时需要大量重构的开销
具体实现
3、NSM模型在一个页上的具体存储布局
基本原理
4、DSM模型的页内布局
5、由于行式存储和列式存储都有自己的优劣,那么有没有一种兼有两种优势的存储方案,是有的,就是PAX存储模型
基本思想
简单来说,就是在NSM模型的页内,设置多个minipage,minipage就是按照DSM的方式把不同的属性设置在不同的组织方式下。
页内的具体存储模型
6、PAX、NSM、DSM的特性的比较
7、PAX存储模型为什么适用于在闪存上
简单来说,因为PAX的页内布局方案,由于传统的数据库的存储介质是磁盘,那么磁盘的随机寻址的开销,那么即使在页内的minipage也需要随机寻址,这样寻址的时间可能给磁盘去读另外一个页了,也就是说在PAX在页内跳过无用的minipage时,这时候跳过无用页的大小要大于顺序读在这段时间跳过的无用页,传统的磁盘的随机读性能非常的差,PAX在此上可能并不会有很大的提升优势。
但是闪存的随机读性能非常好,随机寻址的时间也非常的短,PAX模型和闪存的寻址时间相结合,只允许去读查询所需要的那些列,所以保留了NSM的功能,同时也具备了DSM的读效率,一次PAX的页内布局方案在闪存上可行的。
8、总结
由于在数据库中,多个表之间会有连接操作,数据库的查询操作也会涉及到连接操作,不同的连接操作的算法对应不一样的性能,连接操作的算法也比较麻烦,这里不总结了,连接操作优化的目的也是利用闪存的随机读的性能,尽量减少读操作的次数。