bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

oracleresultcache結(jié)果集緩存的使用方法

本篇文章為大家展示了oracle result cache 結(jié)果集緩存的使用方法,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、正寧ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的正寧網(wǎng)站制作公司

結(jié)果集緩存
緩存是一種最常見的在計(jì)算機(jī)系統(tǒng)用來提高性能的技術(shù).硬件和軟件被廣泛的使用.oracle數(shù)據(jù)庫也不會例外.例如在緩沖區(qū)緩存中緩存數(shù)據(jù)文件塊,在字典緩存中緩存字典信息,在庫緩存中緩存游標(biāo).在oracle11G中結(jié)果集緩存也是可用的.

結(jié)果集緩存是如何工作的
oracle數(shù)據(jù)庫引擎提供了三種結(jié)果集緩存:
服務(wù)器結(jié)果集緩存也叫查詢結(jié)果緩存,是一種服務(wù)器端緩存,它用來存儲查詢的結(jié)果集.

pl/sql函數(shù)結(jié)果集緩存是一種服務(wù)器端緩存,它用來存儲pl/sql函數(shù)返回的結(jié)果集.

客戶端結(jié)果集緩存是一種客戶端緩存,用來存儲查詢結(jié)果集.

服務(wù)器結(jié)果集緩存
服務(wù)器結(jié)果集緩存是用來避免重復(fù)執(zhí)行查詢.簡單來說查詢第一次執(zhí)行,它的結(jié)果集被存儲在共享池中.然后后續(xù)執(zhí)行相同的查詢時(shí)從結(jié)果集緩存中直接提取結(jié)果集而不用重新計(jì)算.注意這兩個(gè)查詢被認(rèn)為是相等的.因此能使用相同的結(jié)果集.另外如果出現(xiàn)綁定變量,那么它們的值必須相同.這是必須的,因?yàn)楹苊黠@,綁定變量作為參數(shù)輸入并傳給查詢.因此不同的綁定變量值會有不同的結(jié)果集.注意結(jié)果集緩存是存儲在共享池中,對于一個(gè)指定的實(shí)例所有連接的會話都能共享相同的緩存條目.

下面來舉例說明.注意在查詢時(shí)指定了result_cache提示來啟用結(jié)果集緩存.第一次執(zhí)行花了1.04秒.可以看到在執(zhí)行計(jì)劃中操作result cache確定了對查詢啟用了結(jié)果集緩存.在執(zhí)行計(jì)劃中starts列清楚的說明了所有的操作都至少要被執(zhí)行一次.執(zhí)行計(jì)劃中所有的操作都是必須的因?yàn)槭堑谝淮螆?zhí)行這個(gè)查詢.因此結(jié)果集緩存還不包含結(jié)果集.

SQL> alter session set statistics_level=all;

SQL> SELECT /*+ result_cache */
  2  p.prod_category, c.country_id,
  3  sum(s.quantity_sold) AS quantity_sold,
  4  sum(s.amount_sold) AS amount_sold
  5  FROM sh.sales s, sh.customers c, sh.products p
  6  WHERE s.cust_id = c.cust_id
  7  AND s.prod_id = p.prod_id
  8  GROUP BY p.prod_category, c.country_id
  9  ORDER BY p.prod_category, c.country_id;

已選擇81行。

已用時(shí)間:  00: 00: 01.04

SQL> select * from table(dbms_xplan.display_cursor(null,null,'all allstats'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

SQL_ID  g9sxqz9qgutu7, child number 0
-------------------------------------
SELECT /*+ result_cache */ p.prod_category, c.country_id,
sum(s.quantity_sold) AS quantity_sold, sum(s.amount_sold) AS
amount_sold FROM sh.sales s, sh.customers c, sh.products p WHERE
s.cust_id = c.cust_id AND s.prod_id = p.prod_id GROUP BY
p.prod_category, c.country_id ORDER BY p.prod_category, c.country_id

Plan hash value: 1866882273

--------------------------------------------------------------------------------


PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

| Id  | Operation                 | Name                       | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop | A-Rows |   A-Time   |  OMem |  1Mem |  O/1/M   |

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |                            |      1 |        |       |   985 (100)|          |       |       |     81 |00:00:00.01 |       |       |          |

|   1 |  RESULT CACHE             | cu8pf4s7jn9d05yda1swvwpd7y |      1 |        |       |            |          |       |       |     81 |00:00:00.01 |       |       |          |

|   2 |   SORT GROUP BY           |                            |      1 |     68 |  3808 |   985   (7)| 00:00:12 |       |       |      0 |00:00:00.01 | 73728 | 73728 |          |

|*  3 |    HASH JOIN              |                            |      1 |    968 | 54208 |   984   (7)| 00:00:12 |       |       |      0 |00:00:00.01 |   940K|   940K|          |

|   4 |     VIEW                  | index$_join$_003           |      1 |     72 |  1512 |     3  (34)| 00:00:01 |       |       |      0 |00:00:00.01 |       |       |          |

|*  5 |      HASH JOIN            |                            |      1 |        |       |            |          |       |       |      0 |00:00:00.01 |  1269K|  1269K|          |

|   6 |       INDEX FAST FULL SCAN| PRODUCTS_PK                |      1 |     72 |  1512 |     1   (0)| 00:00:01 |       |       |      0 |00:00:00.01 |       |       |          |

|   7 |       INDEX FAST FULL SCAN| PRODUCTS_PROD_CAT_IX       |      1 |     72 |  1512 |     1   (0)| 00:00:01 |       |       |      0 |00:00:00.01 |       |       |          |

|   8 |     VIEW                  | VW_GBC_9                   |      1 |    968 | 33880 |   981   (7)| 00:00:12 |       |       |      0 |00:00:00.01 |       |       |          |

|   9 |      HASH GROUP BY        |                            |      0 |    968 | 26136 |   981   (7)| 00:00:12 |       |       |      0 |00:00:00.01 |    56M|  4744K|          |

|* 10 |       HASH JOIN           |                            |      1 |    918K|    23M|   941   (3)| 00:00:12 |       |       |      0 |00:00:00.01 |  3056K|  1398K|          |

|  11 |        TABLE ACCESS FULL  | CUSTOMERS                  |      1 |  55500 |   541K|   406   (1)| 00:00:05 |       |       |      0 |00:00:00.01 |       |       |          |

|  12 |        PARTITION RANGE ALL|                            |      1 |    918K|    14M|   530   (3)| 00:00:07 |     1 |    28 |      0 |00:00:00.01 |       |       |          |

|  13 |         TABLE ACCESS FULL | SALES                      |     28 |    918K|    14M|   530   (3)| 00:00:07 |     1 |    28 |      0 |00:00:00.01 |       |       |          |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二次執(zhí)行只花了0.03秒.在執(zhí)行計(jì)劃中starts列顯示了所有操作的執(zhí)行次數(shù).RESULT CACHE被執(zhí)一次.其它的操作沒有被執(zhí)行.換句話說直接使用了存儲在結(jié)果集緩存中的結(jié)果集.

SQL> SELECT /*+ result_cache */
  2  p.prod_category, c.country_id,
  3  sum(s.quantity_sold) AS quantity_sold,
  4  sum(s.amount_sold) AS amount_sold
  5  FROM sh.sales s, sh.customers c, sh.products p
  6  WHERE s.cust_id = c.cust_id
  7  AND s.prod_id = p.prod_id
  8  GROUP BY p.prod_category, c.country_id
  9  ORDER BY p.prod_category, c.country_id;

已選擇81行。

已用時(shí)間:  00: 00: 00.03

SQL> select *  from table(dbms_xplan.display_cursor(null,null,'all allstats'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

SQL_ID  g9sxqz9qgutu7, child number 0
-------------------------------------
SELECT /*+ result_cache */ p.prod_category, c.country_id,
sum(s.quantity_sold) AS quantity_sold, sum(s.amount_sold) AS
amount_sold FROM sh.sales s, sh.customers c, sh.products p WHERE
s.cust_id = c.cust_id AND s.prod_id = p.prod_id GROUP BY
p.prod_category, c.country_id ORDER BY p.prod_category, c.country_id

Plan hash value: 1866882273

--------------------------------------------------------------------------------


PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

| Id  | Operation                 | Name                       | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | Pstart| Pstop | A-Rows |   A-Time   |  OMem |  1Mem |  O/1/M   |

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |                            |      1 |        |       |   985 (100)|          |       |       |    162 |00:00:00.01 |       |       |          |

|   1 |  RESULT CACHE             | cu8pf4s7jn9d05yda1swvwpd7y |      1 |        |       |            |          |       |       |    162 |00:00:00.01 |       |       |          |

|   2 |   SORT GROUP BY           |                            |      0 |     68 |  3808 |   985   (7)| 00:00:12 |       |       |      0 |00:00:00.01 | 73728 | 73728 |          |

|*  3 |    HASH JOIN              |                            |      0 |    968 | 54208 |   984   (7)| 00:00:12 |       |       |      0 |00:00:00.01 |   940K|   940K|          |

|   4 |     VIEW                  | index$_join$_003           |      0 |     72 |  1512 |     3  (34)| 00:00:01 |       |       |      0 |00:00:00.01 |       |       |          |

|*  5 |      HASH JOIN            |                            |      0 |        |       |            |          |       |       |      0 |00:00:00.01 |  1269K|  1269K|          |

|   6 |       INDEX FAST FULL SCAN| PRODUCTS_PK                |      0 |     72 |  1512 |     1   (0)| 00:00:01 |       |       |      0 |00:00:00.01 |       |       |          |

|   7 |       INDEX FAST FULL SCAN| PRODUCTS_PROD_CAT_IX       |      0 |     72 |  1512 |     1   (0)| 00:00:01 |       |       |      0 |00:00:00.01 |       |       |          |

|   8 |     VIEW                  | VW_GBC_9                   |      0 |    968 | 33880 |   981   (7)| 00:00:12 |      |        |      0 |00:00:00.01 |       |       |          |

|   9 |      HASH GROUP BY        |                            |      0 |    968 | 26136 |   981   (7)| 00:00:12 |      |        |      0 |00:00:00.01 |    56M|  4744K|          |

|* 10 |       HASH JOIN           |                            |      0 |    918K|    23M|   941   (3)| 00:00:12 |      |        |      0 |00:00:00.01 |  3056K|  1398K|          |

|  11 |        TABLE ACCESS FULL  | CUSTOMERS                  |      0 |  55500 |   541K|   406   (1)| 00:00:05 |      |        |      0 |00:00:00.01 |       |       |          |

|  12 |        PARTITION RANGE ALL|                            |      0 |    918K|    14M|   530   (3)| 00:00:07 |    1 |     28 |      0 |00:00:00.01 |       |       |          |

|  13 |         TABLE ACCESS FULL | SALES                      |      0 |    918K|    14M|   530   (3)| 00:00:07 |    1 |     28 |      0 |00:00:00.01 |       |       |          |

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在執(zhí)行計(jì)劃中要注意一個(gè)名字緩存ID它與操作result cache相關(guān).如果知道這個(gè)緩存ID,可以查詢v$resul_cache_objects視圖來顯示關(guān)于緩存數(shù)據(jù)的信息.下面的查詢顯示緩存結(jié)果集已經(jīng)被發(fā)布(換句話說可以使用).視圖信息會顯示緩存結(jié)果集是何進(jìn)創(chuàng)建的,創(chuàng)建它花了多長時(shí)間,有多少行記錄被存儲和它被引用了多少次.其它提供關(guān)于緩存結(jié)果集信息的視圖還有v$result_cache_dependency,v$result_cache_memory和v$result_chace_statistics.

SQL> SELECT status, creation_timestamp, build_time, row_count, scan_count
  2  FROM v$result_cache_objects
  3  WHERE cache_id = 'cu8pf4s7jn9d05yda1swvwpd7y';
 
STATUS    CREATION_TIMESTAMP BUILD_TIME  ROW_COUNT SCAN_COUNT
--------- ------------------ ---------- ---------- ----------
Published 2013-7-5 9:21:26           94         81          3

為了保證結(jié)果的一致性(也就是說結(jié)果集是相同的就是看它是來自緩存還是來自數(shù)據(jù)庫計(jì)算).每當(dāng)查詢中所引用的對象發(fā)生改變,那么依賴于這些表的緩存條目將會無效.事實(shí)情況就是這樣,即使真正的改變沒有發(fā)生.例如.甚至一個(gè)select * for update語句后面緊跟著一個(gè)commit提交也會導(dǎo)致依賴于select表的緩存條目變?yōu)闊o效.

有一些動態(tài)初始化參數(shù)可以控制服務(wù)器結(jié)果集緩存:
result_cache_max_size:以byte為單位來指定在共享池中用于結(jié)果集緩存的內(nèi)存總量.如果它被設(shè)置為0,這個(gè)功能將會被禁用.缺省值是一個(gè)比0大的值,它是從共享池中派生出來的.內(nèi)存分配是動態(tài)的,因此初始化參數(shù)只能指定它的上限.可以使用下面的查詢來顯示當(dāng)前分配的內(nèi)存大小:

SQL> SELECT name, sum(bytes) FROM v$sgastat WHERE name LIKE 'Result Cache%' GROUP BY rollup(name);
 
NAME                       SUM(BYTES)
-------------------------- ----------
Result Cache                   161680
Result Cache: Bloom Fltr         2048
Result Cache: Cache Mgr           208
Result Cache: Memory Mgr          200
Result Cache: State Objs         2896
                               167032
下面的語句顯示了resulr_cache_max_size的值為15424K
SQL> show parameter result
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
client_result_cache_lag              big integer 3000
client_result_cache_size             big integer 0
result_cache_max_result              integer     5
result_cache_max_size                big integer 15424K
result_cache_mode                    string      MANUAL
result_cache_remote_expiration       integer     0

result_cache_mode:指定在什么情況下使用結(jié)果集緩存.可以將它設(shè)置為manual手動這是缺省值或者設(shè)置為force.當(dāng)使用manual時(shí)結(jié)果集緩存只有當(dāng)指定result_cache提示時(shí)才使用.當(dāng)使用force時(shí)那么會對所有沒有使用no_result_cache提示的所有查詢使用結(jié)果集緩存.因?yàn)樵诖蠖鄶?shù)情況下我們只會對少量的查詢使用結(jié)果集緩存,所以讓該參數(shù)設(shè)置為它的缺省值manual當(dāng)只需要使用時(shí)在查詢中指定result_cache來啟用它.

result_cache_max_result:指定單一個(gè)結(jié)果集緩存的占用result_cache_max_size服務(wù)器結(jié)果集緩存大小的百分比.它的缺省值是5.它的值可以是0到100的任何一個(gè)數(shù)字.超過這個(gè)限制的結(jié)果集緩存將是無效的.

result_cache_remote_expiration:指定基于遠(yuǎn)程對象的結(jié)果集的有效時(shí)間(以分鐘為單位).這是必須的,因當(dāng)遠(yuǎn)程對象已經(jīng)發(fā)生改變了基于這些遠(yuǎn)程對象的失效的結(jié)果集緩存不能被執(zhí)行.當(dāng)經(jīng)過初始化參數(shù)所指定的有效時(shí)間后這些結(jié)果集才變?yōu)闊o效.這個(gè)參數(shù)的缺省值是0,意味著基于遠(yuǎn)程對象的查詢緩存功能被禁用.

初始化參數(shù)result_cache_max_size和result_cache_max_result只能在系統(tǒng)級別進(jìn)行修改.其它的result_cache_mode
和result_cache_remote_expiration能在會話級別進(jìn)行修改.

注意:將result_cache_remote_expiration參數(shù)設(shè)置為一個(gè)比0大的數(shù)字會導(dǎo)致過時(shí)的結(jié)果集緩存存在.因此只有你真正地理解這樣做的影響后才能將它設(shè)置為比0大.

使用結(jié)果集緩存有幾個(gè)很明顯的限制:
查詢使用非確定性的函數(shù),序列和臨時(shí)表是結(jié)果集不會被緩存

查詢違反了讀一致性時(shí)結(jié)果集將不會被緩存.例如,當(dāng)通過會話創(chuàng)建結(jié)果集時(shí)所引用的表正經(jīng)歷大量的事務(wù)這樣的結(jié)果
集不會被緩存.

引用數(shù)據(jù)字典視圖的查詢的結(jié)果集不會被緩存.

dbms_result_cache包
可以使用dbms_result_cache包來管理結(jié)果集緩存,它提供了以下程序來進(jìn)行管理:
bypass:在會話或系統(tǒng)級別臨時(shí)禁用或啟用結(jié)果集緩存.

flush:從結(jié)果集緩存中清空所有對象

invalidate:讓依賴于指定的數(shù)據(jù)庫對象的所有結(jié)果集緩存變?yōu)闊o效

invalidate_object:讓單個(gè)結(jié)果集緩存條目變?yōu)闊o效

memory_report:生成一個(gè)內(nèi)存使用情況報(bào)告

status:顯示結(jié)果集緩存的狀態(tài).

例如:

SQL> select dbms_result_cache.status from dual;
 
STATUS
--------------------------------------------------------------------------------
ENABLED

pl/sql函數(shù)結(jié)果集緩存
pl/sql函數(shù)結(jié)果集緩存類似于服務(wù)器結(jié)果集緩存,但是它支持pl/sql函數(shù),還和服務(wù)器結(jié)果集緩存共享相同的內(nèi)存結(jié)構(gòu).它的目的是在結(jié)果集緩存中存儲函數(shù)返回的值(僅僅只有函數(shù)返回的值,過程返回的值不能被緩存).明顯地使用不同輸入值的函數(shù)是以不同的緩存條目被緩存在結(jié)果集緩存中的.在下面的例子中顯示了一個(gè)啟用結(jié)果集緩存的函數(shù).為了啟用pl/sql函數(shù)結(jié)果集緩存,要指定result_cache子句.還可以指定relies_on子句來指定函數(shù)依賴于哪個(gè)表來返回結(jié)果.

SQL> CREATE OR REPLACE FUNCTION f
  2    RETURN NUMBER
  3    RESULT_CACHE RELIES_ON(t) IS
  4    l_ret NUMBER;
  5  BEGIN
  6    SELECT count(t.indi_id) INTO l_ret FROM impl_chenzhou.bs_insured t;
  7    RETURN l_ret;
  8  END;
  9  /
 
Function created

在下面的例子中將會調(diào)用函數(shù)2480625次f不使用結(jié)果集緩存(通過使用bypass過程來臨時(shí)禁用結(jié)果集緩存)共用了4.69秒

SQL> execute dbms_result_cache.bypass(bypass_mode => TRUE, session => TRUE);

SQL> select count(f) from impl_chenzhou.bs_insured t;

  COUNT(F)
----------
   2480625

Elapsed: 00:00:04.69

在下面的例子中將會調(diào)用函數(shù)2480625次f使用結(jié)果集緩存共用了0.32秒
SQL> execute dbms_result_cache.bypass(bypass_mode => FALSE, session => TRUE)

SQL> select count(f) from impl_chenzhou.bs_insured t;

  COUNT(F)
----------
   2480625

Elapsed: 00:00:00.32

注意:如果relies_on子句沒有指定或者包含錯誤信息,當(dāng)函數(shù)依賴的對象發(fā)生修改結(jié)果集緩存不會變?yōu)闊o效.因此可能會出現(xiàn)過時(shí)的結(jié)果集.

使用pl/sql函數(shù)結(jié)果集有一些限制,下面的函數(shù)不能使用結(jié)果集緩存:
使用out和(或者)in out參數(shù)的函數(shù)

定義了使用調(diào)用者權(quán)限的函數(shù)

管道化表函數(shù)

從匿名塊調(diào)用函數(shù)

使用in參數(shù)或者返回值有以下類型的函數(shù):LOB,REF CURSOR,對象和記錄

客戶端結(jié)果緩存集
客戶端結(jié)果集緩存是用客戶端緩存來存查詢的結(jié)果集.它的目的和工作類似于服務(wù)器端結(jié)果集緩存.與服務(wù)器端的實(shí)現(xiàn)進(jìn)行比較有兩個(gè)重要的不同.第一它避免了需要在客戶端/服務(wù)器之間來回地執(zhí)行sql語句.這是一大優(yōu)點(diǎn).第二結(jié)果集的失效是基于一種輪詢機(jī)制,因此一致性不能保證這是一大缺點(diǎn).

為了實(shí)現(xiàn)這種輪詢客戶端必須定期地執(zhí)行數(shù)據(jù)庫調(diào)用來檢查數(shù)據(jù)庫引擎看看它的結(jié)果集緩存是否已經(jīng)變?yōu)闊o效了.為了輪詢的開銷最小化,每一次客戶端由于其它原因執(zhí)行一個(gè)數(shù)據(jù)庫調(diào)用時(shí)它將檢查結(jié)果集緩存的有效性.這樣,就可以避免掉那些用于對緩存的結(jié)果集進(jìn)行失效操作的數(shù)據(jù)庫調(diào)用.使客戶端能持續(xù)地執(zhí)行"正常的"數(shù)據(jù)庫調(diào)用.

盡管它是客戶端緩存但還是要在服務(wù)器端來啟用它.下面有些參數(shù)來控制客戶端緩存:
client_result_cache_size:指定每一個(gè)客戶端進(jìn)程能使用的結(jié)果集緩存的最大內(nèi)存大小以byte為單位.如果它設(shè)置為0,這也是缺省值那么這個(gè)功能將禁用.這個(gè)初始化參數(shù)是靜態(tài)的只能在實(shí)例級別進(jìn)行修改.修改完后必須對實(shí)例進(jìn)行重啟才會生效.

client_result_cache_lag:指定兩次數(shù)據(jù)庫調(diào)用之間的最大時(shí)間間隔以毫秒為單位.也就是說它指定無效的結(jié)果集能在客戶端緩存中保留多長的時(shí)間.缺省值是3000.這個(gè)初始化參數(shù)是靜態(tài)的只能在實(shí)例級別進(jìn)行修改.修改完后必須對實(shí)例進(jìn)行重啟才會生效.

oci_result_cache_max_size:會覆蓋服務(wù)器端設(shè)置的初始化參數(shù)client_result_cache-size.然而要注意是如果在服務(wù)器禁用了結(jié)果集緩存這個(gè)參數(shù)將不能激活它.

oci_result_cache_max_rset_size:指定單個(gè)結(jié)果集緩存最多能使用的內(nèi)存大小以byte為單位.

oci_result_cache_max_rset_rows:指定單個(gè)結(jié)果集緩存最多能存儲的返回行數(shù).

何時(shí)使用
當(dāng)你遇到由程序反復(fù)執(zhí)行相同的操作所導(dǎo)致的性能問題時(shí),你要么減少執(zhí)行的頻率要么減少操作的響應(yīng)時(shí)間.理想的情況時(shí)兩者都做.然而有時(shí)(例如由于應(yīng)用程序代碼不能修改)你只能實(shí)現(xiàn)后者.為了減少響應(yīng)時(shí)間可以使用各種優(yōu)化技術(shù),如果還不能滿足要求那就只能使用高級優(yōu)化技術(shù)了象結(jié)果集緩存.基本上要有效使用結(jié)果集緩存要滿足兩個(gè)條件.第一相對于修改數(shù)據(jù)來說同樣的數(shù)據(jù)查詢的更頻繁.第二要有足夠的內(nèi)存來存儲結(jié)果集.

在大多數(shù)情況下不能對所有的查詢都啟用結(jié)果集緩存.事實(shí)上在大多數(shù)時(shí)候只有特定的查詢才能從結(jié)果集緩存中獲益而對于其它的情況來說,結(jié)果集緩存只不過是一種純粹的額外的開銷說不定還會使用緩存過載.還要記住的是服務(wù)器端緩存是對所有會話共享的,因此它們的訪問是要同步的(它們也會象所有的共享資源一樣變成一個(gè)串處理點(diǎn)).因此只有在真正查詢請求它們的時(shí)候才會結(jié)果集緩存.也就是說只當(dāng)真正需要使用它們來提高性能時(shí)才在查詢中指定result_cache提示.

服務(wù)器端結(jié)果集緩存無法完全避免執(zhí)行一個(gè)查詢的額外開銷.這意味著如果一個(gè)查詢在不使用結(jié)果集緩存的情況下對于每一行執(zhí)行了最少的邏輯讀(不是物理讀)了,那么使用結(jié)果集緩存性能不會提高很多.請記住高速緩存和結(jié)果集緩存都是存儲在相同的共享內(nèi)存中的.

pl/sql函數(shù)結(jié)果集緩存對于經(jīng)常在sql語句中使用的函數(shù)來說特別有用.事實(shí)上常遇到這樣的情況被處理或被返回的每一行都會調(diào)用一次這個(gè)函數(shù),同時(shí)輸入的參數(shù)也只有幾個(gè)不同的值,然而這個(gè)函數(shù)經(jīng)常從pl/sql中被頻繁地調(diào)用它能使用結(jié)果集緩存.

因?yàn)橐恢滦缘膯栴}客戶端緩存只應(yīng)該用在只讀表或主要是讀的表上.

最后要注意的是可以同進(jìn)使用服務(wù)器和客戶端結(jié)果集緩存.然而對于客戶端執(zhí)行的查詢不能選擇只使用服務(wù)器結(jié)果集緩存而不使用客戶端結(jié)果集緩存.也就是說兩種結(jié)果集緩存都會被使用.

上述內(nèi)容就是oracle result cache 結(jié)果集緩存的使用方法,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站標(biāo)題:oracleresultcache結(jié)果集緩存的使用方法
網(wǎng)站路徑:http://vcdvsql.cn/article8/pehpop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化網(wǎng)站制作網(wǎng)站導(dǎo)航網(wǎng)站內(nèi)鏈網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)