亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle 表緩存(caching table)的使用

系統(tǒng) 2016 0

--************************************

-- Oracle 表緩存 (caching table) 的使用

--************************************

?

1. 使用 caching table 的原因

??????? 在通常的情況下,應(yīng)用程序訪問在 cache 中的數(shù)據(jù)塊將按照 LRU 算法來進(jìn)行處理。然而對(duì)于小表的訪問,當(dāng)使用全表掃描時(shí),則該表

??? 中的塊會(huì)放置 LRU 列表最近最少使用尾部的 ( LRU ) ,因此很快就被淘汰出局。然而使用基于成本優(yōu)化的方法,對(duì)于小表進(jìn)行查詢以及收

??? 集統(tǒng)計(jì)信息,大多情形下走的是全表掃描,因此勢必造成一種情形,即該表后續(xù)需要再次訪問,而每次使用了全表掃描,而該對(duì)象很快

??? 被淘汰出局,因此需要再次讀入到 buffer cache ,耗用了大量的 I / O

???????????

2. 解決該問題的方法

??? 設(shè)計(jì)表為 caching table ,即使對(duì)該表使用全表訪問時(shí),則該表對(duì)象的塊仍然被放置在 LRU 列表最近最多使用的尾部 (MRU )

??? 不要過度的使用 caching table ,以免造成性能下降

??? 通常將 caching table 存放在 keep buffer pool ,缺省的情況下會(huì)放置在 default buffer pool

???

3. 具有 cache 屬性與 pin 的差異

??? 對(duì)于具有 cache 屬性的對(duì)象,并不是將該對(duì)象 pin cache 里,而是盡可能的延遲該對(duì)象駐留 cache 的時(shí)間

??? 而對(duì)于 pin 對(duì)象,則是將該對(duì)象常駐到內(nèi)存

???

4. 設(shè)計(jì) cache table 的方法

??? 創(chuàng)建表對(duì)象時(shí),使用 cache 子句

??? 修改表對(duì)象時(shí),使用 cache 子句

??? 使用 cache 提示

???

??? 創(chuàng)建表對(duì)象時(shí)使用 cache ,如下面的例子

??????? create table tb_test

??????? ( id number

??????? ? , name varchar2 ( 20 )

??????? ? , sex ? char ( 1 )

??????? ? , age ? number

??????? ? , score number )

??????? ? tablespace users

??????? ? storage ( initial 50k next 50k pctincrease 0 )

??????? ? cache ; ??? -- 指定 cache 子句

?

??? ? 使用 alter table 修改已經(jīng)存在的表

??????? alter table scott . emp cache ;

???????

??? ? 可以使用 nocache 來修改對(duì)象,使其不具備 cache 屬性

??????? alter table soctt . emp nocache

???????

??? ? 使用 hint 提示符來實(shí)現(xiàn) cache

??????? select /*+ cache*/ empno , ename from scott . emp ;

???

5. 使用例子演示 caching table 情形

?

??? scott@ORCL > create table tb1 nologging

??? ? 2 ? as select level id , rpad ( '*' , 4000 , '*' ) data , rpad ( '*' , 2000 , '*' ) data2

??? ? 3 ? from dual

??? ? 4 ? connect by level <= 15000 ;

?

??? Table created . ?

?

??? scott@ORCL > create table tb2

??? ? 2 ? cache nologging

??? ? 3 ? as select level id , rpad ( '*' , 4000 , '*' ) data , rpad ( '*' , 2000 , '*' ) data2

??? ? 4 ? from dual

??? ? 5 ? connect by level <= 15000 ;

?

??? Table created .

?

??? scott@ORCL > select count ( 1 ) from tb1 ;

?

??? ? COUNT ( 1 )

??? ----------

??????? ? 15000

?

??? scott@ORCL > select count ( 1 ) from tb2 ;

?

??? ? COUNT ( 1 )

??? ----------

??????? ? 15000

?

??? scott@ORCL > select table_name , num_rows , cache from user_tables where table_name in ( 'TB1' , 'TB2' );

?

??? TABLE_NAME ??????? NUM_ROWS CACHE

??? --------------- ---------- -----

??? TB1 ????????????????? 15000 ???? N

??? TB2 ????????????????? 15000 ???? Y

??????? ?

??? scott@ORCL > set autotrace traceonly statistics ;

??? scott@ORCL > select count ( 1 ) from tb1 ;

?

??? Statistics

??? ----------------------------------------------------------

??????????? ? 5 ? recursive calls

??????????? ? 0 ? db block gets

??????? ? 15086 ? consistent gets

??????? ? 15000 ? physical reads

??????????? ? 0 ? redo size

??????????? 412 ? bytes sent via SQL * Net to client

??????????? 385 ? bytes received via SQL * Net from client

??????????? ? 2 ? SQL * Net roundtrips to / from client

??????????? ? 0 ? sorts ( memory )

??????????? ? 0 ? sorts ( disk )

??????????? ? 1 ? rows processed

??????????? ?

??? scott@ORCL > select count ( 1 ) from tb1 ;

?

??? Statistics

??? ----------------------------------------------------------

??????????? ? 0 ? recursive calls

??????????? ? 0 ? db block gets

??????? ? 15011 ? consistent gets

??????? ? 15000 ? physical reads

??????????? ? 0 ? redo size

??????????? 412 ? bytes sent via SQL * Net to client

??????????? 385 ? bytes received via SQL * Net from client

??????????? ? 2 ? SQL * Net roundtrips to / from client

??????????? ? 0 ? sorts ( memory )

??????????? ? 0 ? sorts ( disk )

??????????? ? 1 ? rows processed ????

?

??? scott@ORCL > select count ( 1 ) from tb2 ;

?

??? Statistics

??? ----------------------------------------------------------

??????????? ? 0 ? recursive calls

??????????? ? 0 ? db block gets

??????? ? 15011 ? consistent gets

??????????? 197 ? physical reads

??????????? ? 0 ? redo size

??????????? 412 ? bytes sent via SQL * Net to client

??????????? 385 ? bytes received via SQL * Net from client

??????????? ? 2 ? SQL * Net roundtrips to / from client

??????????? ? 0 ? sorts ( memory )

??????????? ? 0 ? sorts ( disk )

??????????? ? 1 ? rows processed

?

??? scott@ORCL > select count ( 1 ) from tb2 ;

?

??? Statistics

??? ----------------------------------------------------------

??????????? ? 0 ? recursive calls

??????????? ? 0 ? db block gets

??????? ? 15011 ? consistent gets

??????????? ? 0 ? physical reads

??????????? ? 0 ? redo size

??????????? 412 ? bytes sent via SQL * Net to client

??????????? 385 ? bytes received via SQL * Net from client

??????????? ? 2 ? SQL * Net roundtrips to / from client

??????????? ? 0 ? sorts ( memory )

??????????? ? 0 ? sorts ( disk )

??????????? ? 1 ? rows processed ???? ?

???

??????? 從上面的示例中可以看出,表 tb1 每次都將使用相同的物理讀,而表 tb2 一旦被 load 進(jìn) buffer cache 中,始終處于 LRU MRU 端,盡可能的

??? 避免因 buffer cache 過小而被置換到 buffer cache 之外。

??????? 注意不同的演示環(huán)境可能有所差異,本人的演示環(huán)境如下 ;

??????????? scott@ORCL > show parameter sga_

?

??????????? NAME ???????????????????????????????? TYPE ??????? VALUE

??????????? ------------------------------------ ----------- ------------------------------

??????????? sga_max_size ???????????????????????? big integer 264M

??????? ??? sga_target ?????????????????????????? big integer 264M

??????????? scott@ORCL > select * from v$version ;

?

??????????? BANNER

??????????? ----------------------------------------------------------------

??????????? Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

??????????? PL / SQL Release 10.2.0.1.0 - Production

??????????? CORE ??? 10.2.0.1.0 ????? Production

??????????? TNS for Linux : Version 10.2.0.1.0 - Production

??????????? NLSRTL Version 10.2.0.1.0 - Production ?????????

??????? ?

6. 注意 cache table keep buffer pool 的異同

??? 兩者的目的都是盡可能將最熱的對(duì)象置于到 buffer pool ,盡可能的避免 aged out

??? cache table 是將對(duì)象置于到 default buffer cache

??? 而使用 buffer_pool keep 子句是將對(duì)象置于到 keep buffer pool

??? 當(dāng) buffer_pool cache 同時(shí)指定時(shí), keep cache 有優(yōu)先權(quán)。 buffer_pool 用來指定存貯使用緩沖池,而 cache/nocache 指定存儲(chǔ)的

??? 方式 (LRU MRU ) 。建表時(shí)候不注明的話, nocache 是默認(rèn)值。

?

7. 更多參考

有關(guān)閃回特性請(qǐng)參考

??????? Oracle 閃回特性(FLASHBACK DATABASE)

Oracle 閃回特性(FLASHBACK DROP & RECYCLEBIN)

Oracle 閃回特性(Flashback Query 、Flashback Table)

Oracle 閃回特性(Flashback Version 、Flashback Transaction)

?

有關(guān)基于用戶管理的備份和備份恢復(fù)的概念請(qǐng)參考:

??????? Oracle 冷備份

??????? Oracle 熱備份

??????? Oracle 備份恢復(fù)概念

??????? Oracle 實(shí)例恢復(fù)

??????? Oracle 基于用戶管理恢復(fù)的處理 ( 詳細(xì)描述了介質(zhì)恢復(fù)及其處理 )

???????

??? 有關(guān) RMAN 的恢復(fù)與管理請(qǐng)參考:

??????? RMAN 概述及其體系結(jié)構(gòu)

??????? RMAN 配置、監(jiān)控 與管理

??????? RMAN 備份詳解

??????? RMAN 還原與恢復(fù)

???????

??? 有關(guān) Oracle 體系結(jié)構(gòu)請(qǐng)參考:

??????? Oracle 實(shí)例和Oracle 數(shù)據(jù)庫(Oracle 體系結(jié)構(gòu))

??????? Oracle 表空間與數(shù)據(jù)文件

??????? Oracle 密碼文件

??????? Oracle 參數(shù)文件

Oracle 數(shù)據(jù)庫實(shí)例啟動(dòng)關(guān)閉過程

??????? Oracle 聯(lián)機(jī)重做日志文件(ONLINE LOG FILE)

??????? Oracle 控制文件(CONTROLFILE)

??????? Oracle 歸檔日志

Oracle 表緩存(caching table)的使用


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲黄色a级片 | 成人a视频在线观看 | 日本久久精品免视看国产成人 | 亚洲视频三区 | 精品亚洲成a人在线播放 | 国内精品小视频 | 日韩一级精品视频在线观看 | 欧美激情中文字幕一区二区 | 91福利在线观看 | 亚洲第一成人在线 | 日本中文在线播放 | 亚洲日韩aⅴ在线视频 | 久久99热精品免费观看欧美 | 午夜伦情电午夜伦情影院 | 亚洲码在线 | 国产精品久久久久久影视 | 四虎免费看 | 综合久久伊人 | 日日碰夜夜 | 四虎亚洲 | 亚洲日本欧美日韩高观看 | 在线高清免费爱做网 | 四虎精品永久在线 | 男女很黄很色床视频网站免 | 亚洲十欧美十日韩十国产 | a视频网站 | 99国产国人青青视频在线观看 | 亚洲国产视频在线观看 | 欧美精品久久久久久久免费观看 | 久久久精品久久久久三级 | 国产极品白嫩美女在线观看看 | 中文字幕日本一区久久 | 成年女人毛片 | 成人做爰小视频 | 日日日影院 | 婷婷综合久久中文字幕一本 | 久久综合中文字幕一区二区三区 | 青青操夜夜操 | 欧美视频在线一区 | 国产亚洲综合一区在线 | 免费观看一级特黄欧美大片 |