EnterpriseDB技术特性介绍:Asynchronous Pre-Fetch 异步预取

异步预取(Asynchronous Pre-Fetch)是EnterpriseDB企业版和基本版的一个特性,只在Linux版本中存在,它可以让数据库服务器充分利用RAID硬件设备,EnterpriseDB在企业版中进一步加强了异步预取的功能。
当使用RAID时,数据库使用如下技术实现数据跨越多个磁盘驱动器:
●    Striping 是指RAID控制器把连续的数据分散为多个部分,分别存储到多个磁盘驱动器上。
●    Mirroring是指RAID控制器将完整的数据拷贝分别放到各个磁盘驱动器上。
系统也经常把striping和mirroring结合使用。
RAID配合使用异步预取非常适合如下情形:
●    数据仓库应用
●    ETL(Extract, transform and load)应用
●    只有少量复杂查询的应用
在没有异步预取时,磁盘I/O是序列化的--即在同一时间点只有一个I/O操作发生,并且在队列中只有一个磁盘驱动是处于活跃状态的,其他的磁盘都是空闲的:


 
当使用异步预取时,多个磁盘I/O请求同时进行,因此,允许多个磁盘驱动器并发工作,从而减少了磁盘访问时间,这使得系统性能有了大幅度提升:


当查询优化器选择位图扫描(bitmap scan)来访问数据时,异步预取更进一步提高了数据库的性能。在一般查询中,那些where条件的AND/OR列可能会用到索引,异步预取将索引数据转化为位图存放到内存中,来定位要选择的行。使用多个磁盘驱动器同时读写大大提高了对行数据的访问速度。
EnterpriseDB将上面提到的异步预取技术放到了基本版8.4中。同时,EnterpriseDB企业版产品中也包含了一个异步预取的加强版本。它提供了相同的多驱动,并发访问的能力,不仅可以使用位图索引,还可以预取普通索引。
当在下面的情况下使用常规索引扫描时,EnterpriseDB 带异步预取的企业版将比基本版表现的更为出色:
●    索引的存储是完全分散的--也就是索引行的存放顺序和索引的顺序完全不同
●    索引中的列很少(只有一个或很少的列组成的索引)
●    需要检索大量的行

你可能感兴趣的:(应用服务器,linux,工作,企业应用)