楼主: guoyJoe

[精华] 物理读之LRU(最近最少被使用)的深入解析

[复制链接]
求职 : 数据库管理员
论坛徽章:
32
生肖徽章2007版:狗
日期:2009-07-20 17:10:18茶鸡蛋
日期:2013-05-23 16:34:43茶鸡蛋
日期:2013-07-19 14:39:22ITPUB社区千里马徽章
日期:2013-08-22 09:58:03雪铁龙
日期:2013-08-23 13:04:11林肯
日期:2013-09-04 14:07:20兰博基尼
日期:2013-09-16 13:45:20马上有钱
日期:2014-05-14 14:07:392014年世界杯参赛球队: 波黑
日期:2014-07-03 13:24:39马上有对象
日期:2014-10-30 14:04:32
21#
发表于 2014-7-30 15:08 | 只看该作者
收藏。

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
22#
 楼主| 发表于 2014-7-30 15:41 | 只看该作者
还不算晕 发表于 2014-7-29 22:19
郭大师霸气,,特地上来回复下

白总做点补充呗

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
23#
 楼主| 发表于 2014-7-30 15:42 | 只看该作者
diashad 发表于 2014-7-30 08:08
先收藏,再了解。

了解,沟通,总结,记录。

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
24#
 楼主| 发表于 2014-7-30 15:42 | 只看该作者
aks5201314 发表于 2014-7-30 15:08
收藏。

   

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
25#
 楼主| 发表于 2014-7-31 10:51 | 只看该作者
*****************************
  总一下辅助链LRU_AUX
*****************************
        1、CR块是挂在辅助链表中的,在一个CBC链上最多放几个CR块有隐含参数决定:_db_block_max_cr_dba,
        当前11g是6个之后开始就覆盖了,否则无限增多,消耗 buffer量太大
        做个update操作就能构造出CR块来
sys@OCM>  select file#,dbablk,ba,lru_flag,
  2    decode(state,0,'free',1,'xcur',2,'scur',3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi',
  3    9,'memory',10,'mwrite',11,'donated', 12,'protected',  13,'securefile', 14,'siop',15,'recckpt',
  4    16, 'flashfree',  17, 'flashcur', 18, 'flashna') status,
  5    decode(bitand(flag,1), 0, 'N', 'Y') dirty,tch from x$bh where file#=7 and dbablk=5959;

     FILE#     DBABLK BA                 LRU_FLAG STATUS     D        TCH
---------- ---------- ---------------- ---------- ---------- - ----------
         7       5959 000000008C77E000          8 xcur       N          1


gyj@OCM> update gyj1_80m set name='AAAAAA' where id=1;

1 row updated.


gyj@OCM> select * from gyj1_80m where id=1;

        ID   NAME
-----------  ------
  1           gyj1

sys@OCM> select file#,dbablk,ba,lru_flag,
  2    decode(state,0,'free',1,'xcur',2,'scur',3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi',
  3    9,'memory',10,'mwrite',11,'donated', 12,'protected',  13,'securefile', 14,'siop',15,'recckpt',
  4    16, 'flashfree',  17, 'flashcur', 18, 'flashna') status,
  5    decode(bitand(flag,1), 0, 'N', 'Y') dirty,tch from x$bh where file#=7 and dbablk=5959;

     FILE#     DBABLK BA                 LRU_FLAG STATUS     D        TCH
---------- ---------- ---------------- ---------- ---------- - ----------
         7       5959 000000008DC4A000          0 cr         N          1
         7       5959 000000008C77E000          8 xcur       Y          1
         
2、大表全表扫描,也挂在辅助链表上
有一个隐藏参数,_small_table_threshold,单位是块数。
表的块数低于此参数的值,就算小表,否则就是大表。该参数的缺省值是Buffer Cache总Buffer数的2%。
在辅助链上大表的数据也可以重用的,只要辅助链buffer的状态不是free.
sys@OCM> shutdown immediate;
sys@OCM> startup
sys@OCM> select CNUM_SET,CNUM_REPL,ANUM_REPL from x$kcbwds where CNUM_SET>0;

  CNUM_SET  CNUM_REPL  ANUM_REPL
---------- ---------- ----------
      6138       6138       3650
      6137       6137       3658
  

gyj@OCM> set autot traceonly;
gyj@OCM>  select * from gyj1_80m;

30000 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 2945941664

------------------------------------------------------------------------------
| Id  | Operation         | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |          | 34137 |    65M|  2740   (1)| 00:00:33 |
|   1 |  TABLE ACCESS FULL| GYJ1_80M | 34137 |    65M|  2740   (1)| 00:00:33 |
------------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement (level=2)


Statistics
----------------------------------------------------------
         25  recursive calls
          2  db block gets
      12503  consistent gets
      10420  physical reads
          0  redo size
   61022045  bytes sent via SQL*Net to client
      22509  bytes received via SQL*Net from client
       2001  SQL*Net roundtrips to/from client
          6  sorts (memory)
          0  sorts (disk)
      30000  rows processed

select file#,dbablk,ba,lru_flag,
  decode(state,0,'free',1,'xcur',2,'scur',3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi',
  9,'memory',10,'mwrite',11,'donated', 12,'protected',  13,'securefile', 14,'siop',15,'recckpt',
  16, 'flashfree',  17, 'flashcur', 18, 'flashna') status,
  decode(bitand(flag,1), 0, 'N', 'Y') dirty,tch from x$bh where file#=7 and dbablk=5959;
  
  sys@OCM> select file#,dbablk,ba,lru_flag,
  2    decode(state,0,'free',1,'xcur',2,'scur',3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi',
  3    9,'memory',10,'mwrite',11,'donated', 12,'protected',  13,'securefile', 14,'siop',15,'recckpt',
  4    16, 'flashfree',  17, 'flashcur', 18, 'flashna') status,
  5    decode(bitand(flag,1), 0, 'N', 'Y') dirty,tch from x$bh where file#=7;

     FILE#     DBABLK BA                 LRU_FLAG STATUS     D        TCH
---------- ---------- ---------------- ---------- ---------- - ----------
         7       1288 000000008C942000          0 xcur       N          0
         7       1322 000000008C934000          0 xcur       N          0
         7       6016 000000008CC74000          0 xcur       N          1
         7       1246 000000008CB12000          0 xcur       N          0
         7       1293 000000008CB06000          0 xcur       N          0
         7       5953 000000008CE76000          0 xcur       N          1
         7       6144 000000008CE72000          0 xcur       N          1
         7        384 000000008CBCC000          0 xcur       N          1
         7       1316 000000008C93A000          2 xcur       N          0
         7       2049 000000008CBD2000          0 xcur       N          1
         7       1287 000000008CB0C000          0 xcur       N          0
         7       6036 000000008CBC6000          6 xcur       N          0


3、刷新BUFFER CACHE

gyj@OCM> select dbms_rowid.ROWID_RELATIVE_FNO(rowid) file_id,dbms_rowid.rowid_block_number(rowid) block_id,name from gyj1_80m where id=1;

   FILE_ID   BLOCK_ID   NAME
---------- ----------  -------
  7          5959        gyj1
  
select file#,dbablk,ba,lru_flag,
  decode(state,0,'free',1,'xcur',2,'scur',3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi',
  9,'memory',10,'mwrite',11,'donated', 12,'protected',  13,'securefile', 14,'siop',15,'recckpt',
  16, 'flashfree',  17, 'flashcur', 18, 'flashna') status,
  decode(bitand(flag,1), 0, 'N', 'Y') dirty,tch from x$bh where file#=7 and dbablk=5959;


    FILE#     DBABLK BA                 LRU_FLAG STATUS     D        TCH
---------- ---------- ---------------- ---------- ---------- - ----------
         7       5959 000000008DF24000          0 xcur       N          1
  
sys@OCM> alter system flush buffer_cache;

System altered.

sys@OCM> select file#,dbablk,ba,lru_flag,
  2    decode(state,0,'free',1,'xcur',2,'scur',3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi',
  3    9,'memory',10,'mwrite',11,'donated', 12,'protected',  13,'securefile', 14,'siop',15,'recckpt',
  4    16, 'flashfree',  17, 'flashcur', 18, 'flashna') status,
  5    decode(bitand(flag,1), 0, 'N', 'Y') dirty,tch from x$bh where file#=7 and dbablk=5959;

     FILE#     DBABLK BA                 LRU_FLAG STATUS     D        TCH
---------- ---------- ---------------- ---------- ---------- - ----------
         7       5959 000000008DF24000          4 free       N          0

gyj@OCM> select dbms_rowid.ROWID_RELATIVE_FNO(rowid) file_id,dbms_rowid.rowid_block_number(rowid) block_id,name from gyj1_80m where id=1;

   FILE_ID   BLOCK_ID   NAME
---------- ----------  -------
  7          5959        gyj1

sys@OCM> select file#,dbablk,ba,lru_flag,
  2    decode(state,0,'free',1,'xcur',2,'scur',3,'cr', 4,'read',5,'mrec',6,'irec',7,'write',8,'pi',
  3    9,'memory',10,'mwrite',11,'donated', 12,'protected',  13,'securefile', 14,'siop',15,'recckpt',
  4    16, 'flashfree',  17, 'flashcur', 18, 'flashna') status,
  5    decode(bitand(flag,1), 0, 'N', 'Y') dirty,tch from x$bh where file#=7 and dbablk=5959;

     FILE#     DBABLK BA                 LRU_FLAG STATUS     D        TCH
---------- ---------- ---------------- ---------- ---------- - ----------
         7       5959 000000008942C000          0 xcur       N          1
         7       5959 000000008DF24000          4 free       N          0    -------看状态是free空闲的。


4、数据库重启
sys@OCM>shutdown immediate;
sys@OCM>startup

sys@OCM> select CNUM_SET,CNUM_REPL,ANUM_REPL from x$kcbwds where CNUM_SET>0;

  CNUM_SET  CNUM_REPL  ANUM_REPL
---------- ---------- ----------
         0          0          0
         0          0          0
         0          0          0
         0          0          0
      6138       6138       3707
      6137       6137       3715
         0          0          0
         0          0          0
         0          0          0
         0          0          0
         0          0          0
         0          0          0
         0          0          0
         0          0          0
         0          0          0
         0          0          0

16 rows selected.

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
20
祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2011-02-20 01:01:01ITPUB季度 技术新星
日期:2011-04-02 10:31:09ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042012新春纪念徽章
日期:2012-01-04 11:54:26玉石琵琶
日期:2012-02-21 15:04:38最佳人气徽章
日期:2012-03-13 17:39:18ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:192013年新春福章
日期:2013-02-25 14:51:242011新春纪念徽章
日期:2011-02-18 11:43:33
26#
发表于 2014-7-31 12:42 | 只看该作者
研究点新东西吧,不要几十年都还是在研究LRU

一起研究12c吧

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
27#
 楼主| 发表于 2014-7-31 14:45 | 只看该作者
huanhuanlove 发表于 2014-7-31 12:42
研究点新东西吧,不要几十年都还是在研究LRU

一起研究12c吧

一切问题从根本出发,没有老与新的区别!

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
28#
 楼主| 发表于 2014-7-31 14:45 | 只看该作者

使用道具 举报

回复
论坛徽章:
70
夏利
日期:2013-09-29 21:02:15天蝎座
日期:2016-03-08 22:25:51嫦娥
日期:2014-03-04 16:46:45ITPUB年度最佳技术原创精华奖
日期:2014-03-04 16:19:29马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:11
29#
发表于 2014-7-31 19:51 | 只看该作者
huanhuanlove 发表于 2014-7-31 12:42
研究点新东西吧,不要几十年都还是在研究LRU

一起研究12c吧

研究12c的LRU算法,

使用道具 举报

回复
论坛徽章:
490
红宝石
日期:2014-04-05 19:53:18海蓝宝石
日期:2014-04-05 21:24:30数据库板块每日发贴之星
日期:2013-05-27 22:53:45生肖徽章:鸡
日期:2014-08-24 18:39:29青年奥林匹克运动会-羽毛球
日期:2014-09-24 08:37:59马上有房
日期:2015-01-03 10:23:28喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47秀才
日期:2017-04-06 18:09:28版主6段
日期:2014-05-27 02:19:57
30#
 楼主| 发表于 2014-7-31 23:30 | 只看该作者
vage 发表于 2014-7-31 19:51
研究12c的LRU算法,

套路差不多的,还没有时间开搞12C,落伍了,现在处在半技术半管理状态,离职有时间就可以专心,好好搞技术算了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表