中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

21c新功能–備用數(shù)據(jù)庫的結(jié)果緩存

發(fā)布于:2021-02-20 00:00:20

0

119

0

Oracle Oracle 21c 緩存功能 數(shù)據(jù)庫

Oracle 21c引入了一種能力,通過啟用結(jié)果緩存功能來存儲查詢結(jié)果以供重復(fù)使用,從而提高了在只讀主備數(shù)據(jù)庫上執(zhí)行的查詢的性能—因此不僅在主數(shù)據(jù)庫上啟用了此功能,而且在備用數(shù)據(jù)庫上也啟用了此功能。

新的Oracle 21c子句RESULT_CACHE(STANDBY ENABLE)可以用作CREATE和ALTER TABLE語句的一部分。

###########################################################################################
Create the Table and Function to test Result Cache

Credit to Tim Hall from Oracle-Base for the function code!
###########################################################################################

SQL> CREATE TABLE demo.tab1 (
 id  NUMBER
);

INSERT INTO demo.tab1 VALUES (1);
INSERT INTO demo.tab1 VALUES (2);
INSERT INTO demo.tab1 VALUES (3);
INSERT INTO demo.tab1 VALUES (4);
INSERT INTO demo.tab1 VALUES (5);

CREATE OR REPLACE FUNCTION demo.fn_tab1(p_id  IN  demo.tab1.id%TYPE)
 RETURN demo.tab1.id%TYPE DETERMINISTIC AS
BEGIN
 DBMS_LOCK.sleep(1);
 RETURN p_id;
END;
/


Table created.

SQL> SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL> SQL>  

Function created.


###########################################################################################
First execution of the function - takes 5 seconds as expected
###########################################################################################

SQL> set timing on
SQL> SELECT demo.fn_tab1(id) FROM qrc_tab;

DEMO.FN_TAB1(ID)
----------------
              1
              2
              3
              4
              5

Elapsed: 00:00:05.04



###########################################################################################
Now add RESULT_CACHE hint

First execution still takes 5 seconds

Subsequent executions takes .01 of a second as Result Cache is being used
###########################################################################################

SQL> select /*+ result_cache */ demo.fn_tab1(id) FROM qrc_tab;

DEMO.FN_TAB1(ID)
----------------
              1
              2
              3
              4
              5

Elapsed: 00:00:05.00

SQL> select /*+ result_cache */ demo.fn_tab1(id) FROM qrc_tab;

DEMO.FN_TAB1(ID)
----------------
              1
              2
              3
              4
              5

Elapsed: 00:00:00.01


###########################################################################################
Enable the Result Cache for ADG Standby Database
###########################################################################################

SQL> alter table demo.tab1 RESULT_CACHE (STANDBY ENABLE);

Table altered.


###########################################################################################
Now on Active Data Guard Standby Database Result Cache is also being used
###########################################################################################

SQL> select database_role,open_mode from v$database;

DATABASE_ROLE    OPEN_MODE
---------------- --------------------
PHYSICAL STANDBY READ ONLY WITH APPLY

SQL> select /*+ result_cache */ demo.fn_tab1(id) FROM demo.tab1;

DEMO.FN_TAB1(ID)
----------------
              1
              2
              3
              4
              5

Elapsed: 00:00:05.08

SQL> select /*+ result_cache */ demo.fn_tab1(id) FROM demo.tab1;

DEMO.FN_TAB1(ID)
----------------
              1
              2
              3
              4
              5

Elapsed: 00:00:00.00