数据库磁盘预读设计的初衷是为减少IO等待,通过顺序扫描提高IO的效率。
原理大致如下:
1、当某个数据库操作,数据库需要从磁盘上频繁读取数据的时候,会产生相对较多的IO等待,影响性能;
2、为了避免这个情况,数据库采用了预读的机制,也就是当读取的内存中还有若干页需要处理的时候就开始触发磁盘预读,而且是预读若干连续的数据页(降低IOPS的需求),从而提高效率
gbase8s/informix涉及预读的有两个参数 RA_PAGES和RA_THRESHOLD。
RA_PAGES:指定数据库服务器执行预读时从磁盘或索引读取的页数。
RA_THRESHOLD:指定内存中触发数据库服务器执行下一次预读的时候还剩余未处理页数。
RA_PAGES=10,RA_THRESHOLD=4:当BUFFERPOOL中还有4个页面需要处理时,数据库服务器将提前读取10个页面。
onstat -p的输出中:
ixda-RA:从索引页到数据页read-aheads的计数;
idx-RA :read-aheads遍历索引页的计数;
da-RA :read-aheads仅扫描数据页的计数;
logrec-RA:数据库服务器发生read-aheads的逻辑日志记录;
RA-pgsused:数据库服务器预读使用的页数;
数据库磁盘预读设计旨在减少IO等待,通过预读连续数据页提升效率。GBase8s/Informix中,预读参数RA_PAGES和RA_THRESHOLD用于控制预读行为。当RA_THRESHOLD值达到阈值时,数据库会预读RA_PAGES数量的页面。onstat-p输出的统计项如ixda-RA、idx-RA等展示了预读活动。预读策略能够有效改善数据库性能。

2973


被折叠的 条评论
为什么被折叠?



