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

本文介绍了EnterpriseDB的异步预取技术,该技术能够利用RAID硬件提高数据库性能,尤其是在数据仓库应用、ETL应用及少量复杂查询场景下效果显著。通过并行处理多个磁盘I/O请求,减少磁盘访问时间,进而大幅提升系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异步预取(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 带异步预取的企业版将比基本版表现的更为出色:
●    索引的存储是完全分散的--也就是索引行的存放顺序和索引的顺序完全不同
●    索引中的列很少(只有一个或很少的列组成的索引)
●    需要检索大量的行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值