DSI中描述的touch算法。

纯理论介绍,有时间再做实验。



20101231_765dd7b5d8f8f2681173JMLAvftZZsux.jpg
2.jpg


8I以后为了提升性能LRU又分为了LRU MAIN和LRU AUX.
LRU MAIN上存在冷短和热端。
_db_percent_hot_default        50                   Percent of default buffer pool considered hot
_db_percent_hot_default参数控制了冷端和热段占整个列表的百分比。默认是50%。



20101231_4b1aebe9bee188dc3af3ICgGDLy3IBwz.jpg
1.jpg


当进程扫描可用块的时候,先从lru aux找起,如果没足够的所需块,再扫描lru main。这个时候涉及一些算法,确定那些块可以被“牺牲掉”。
扫描的话先从LRU MIAN的COLD端的尾部找起。如果发现touch 数字小于_db_aging_hot_criteria,则重用这个buffer.
_db_aging_hot_criteria的值默认为2.
_db_aging_hot_criteria         2                    Touch count which sends a buffer to head of replacement list
假如扫描的块的touch为10,那么由于10>_db_aging_hot_criteria,因此不会被“牺牲”,但是会有两种情况
1)如果_db_aging_stay_count >_db_aging_hot_criteria,那么得减半这个buffer的toch数。
2)否则,设置这个buffer的touch数为_db_aging_stay_count
因此可以看出_db_aging_stay_count是个变化的值,默认第一次的值是0.
以我们的情况来说,由于0<2,因此将符合条件2,_db_aging_stay_count的值变为10.
_db_aging_stay_count           0                    Touch count set when buffer moved to head of replacement list
假如下一个数据块的touch数为12,12>_db_aging_hot_criteria,由于此时_db_aging_stay_count 的值已经被修改为10了,因此_db_aging_stay_count >2,符合第一种情况,那么将这个数据块的touch数减半,成为6.
还有一个比较重要的参数是_db_aging_touch_time,我们需要简单了解。它代表在达到定义的时间以后,touch数才会被记录。
默认值是3.例如一个数据块A三秒内访问十次,而只会被记录1次。9秒内访问10次,被记录三次。
_db_aging_touch_time           3                    Touch count which sends a buffer to head of replacement list

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-683070/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22034023/viewspace-683070/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值