2008年(239)
分类: Sybase
2008-06-18 00:30:17
异步预取进程负责将代理进程随后要处理的数据事先读入到内存中,避免代理进程处理时等待数据的读入,从而提高用户请求的处理速度。只有在系统需要数据的预先读取时,才会激活异步预取进程。
代理进程在处理事务时,要求被操作的数据处于内存中。如果内存中不存在所需的数据,代理进程就必须等待,直到所需数据读入内存,然后才继续处理。这种等待会严重影响用户请求的响应时间。为了降低代理进程的I/O等待,数据库系统引入了异步预取进程,预先将代理进程要处理的数据读入内存。
并不是所有的代理进程在处理时都需要进行预取。要进行事先的数据读取,需要满足以下两个条件:
(1)对大数据量进行操作
(2)系统能够预见随后要处理的数据
对一个或者多个包含很多记录的表,进行诸如:表扫描、索引扫描、排序、合并等操作,异步预取操作就不可避免。优化器在分析、优化SQL语句后,如果发现需要进行预取操作,就会激活异步预取进程。
异步预取进程对数据的读取是渐进的。如果已读入内存、还没有被使用数据的数量,达到数据库系统设定的上限后,异步预取进程就停止操作;如果低于设定的下限值后,异步预取进程又重新被激活。这种处理方式,一方面可以保证代理进程要处理的数据事先被读入内存,另一方面又可以避免太多的数据读入占用大量可用内存空间,影响到其它事务的处理。