[20200212]使用DBMS_SHARED_POOL.MARKHOT與sql的計算2.txt
[20200212]使用DBMS_SHARED_POOL.MARKHOT與sql的計算2.txt
--//昨天的測試:http://blog.itpub.net/267265/viewspace-2675128/ =>[20200211]使用DBMS_SHARED_POOL.MARKHOT與sql_id的計算.txt
--//補充測試設定隱含引數_kgl_hot_object_copies的情況:
1.環境:
SCOTT@book> ver1
PORT_STRING VERSION BANNER
------------------- ---------- -----------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SYS@book> alter system set "_kgl_hot_object_copies"=101 scope=spfile ;
System altered.
--//必須重啟才生效,重啟資料庫略。
SYS@book> @ hide _kgl_hot_object_copies
NAME DESCRIPTION DEFAULT_VALUE SESSION_VALUE SYSTEM_VALUE ISSES ISSYS_MOD
---------------------- ----------------------------------- ------------- ------------- ------------ ----- ---------
_kgl_hot_object_copies Number of copies for the hot object FALSE 101 101 FALSE FALSE
SCOTT@book> select * from dept where deptno=10;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
--//sql_id='4xamnunv51w9j',可以執行多次,避免sql語句退出共享池.
SELECT name
,hash_value
,full_hash_value
,namespace
,child_latch
,property hot_flag
,executions
,invalidations
FROM v$db_object_cache
WHERE name = 'select * from dept where deptno=10';
NAME HASH_VALUE FULL_HASH_VALUE NAMESPACE CHILD_LATCH HOT_FLAG EXECUTIONS INVALIDATIONS
---------------------------------------- ---------- -------------------------------- ---------- ----------- ---------- ---------- -------------
select * from dept where deptno=10 911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA 0 6 0
select * from dept where deptno=10 911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA 61745 6 0
--//確定FULL_HASH_VALUE='1431c45dbddbb9e74eaa74d53650f131'.
$ echo -e -n 'select * from dept where deptno=10\0' | md5sum | sed 's/ -//' | xxd -r -p | od -t x4 | sed -n -e 's/^0000000 //' -e 's/ //gp'
1431c45dbddbb9e74eaa74d53650f131
--//對比完全能對上。
2.測試:
--//首先使用DBMS_SHARED_POOL.MARKHOT標記。
SYS@book> exec dbms_shared_pool.markhot( hash=>'1431c45dbddbb9e74eaa74d53650f131', namespace=>0, global=>true);
PL/SQL procedure successfully completed.
--//以scott登入
--//session 1:
SCOTT@book> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
295 7 63251 DEDICATED 63252 21 4 alter system kill session '295,7' immediate;
SCOTT@book> select * from dept where deptno=10;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
--//session 2:
SYS@book> select sql_id,sql_text,executions,length(sql_text),ora_hash(sql_text) from v$sqlarea where sql_text = 'select * from dept where deptno=10' ;
SQL_ID SQL_TEXT EXECUTIONS LENGTH(SQL_TEXT) ORA_HASH(SQL_TEXT)
------------- ------------------------------------------------------------ ---------- ---------------- ------------------
atpswbzn2drda select * from dept where deptno=10 1 34 156172166
4xamnunv51w9j select * from dept where deptno=10 6 34 156172166
--//sql_id=atpswbzn2drda select
SELECT name
,hash_value
,full_hash_value
,namespace
,child_latch
,property hot_flag
,executions
,invalidations
FROM v$db_object_cache
WHERE name = 'select * from dept where deptno=10';
NAME HASH_VALUE FULL_HASH_VALUE NAMESPACE CHILD_LATCH HOT_FLAG EXECUTIONS INVALIDATIONS
---------------------------------------- ---------- -------------------------------- ---------- ----------- ---------- ---------- -------------
select * from dept where deptno=10 3894861226 6b47602c1c49a6baacd71c5fe826ddaa SQL AREA 0 HOTCOPY94 1 0
select * from dept where deptno=10 3894861226 6b47602c1c49a6baacd71c5fe826ddaa SQL AREA 56746 HOTCOPY94 1 0
select * from dept where deptno=10 911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA 0 HOT 6 0
select * from dept where deptno=10 911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA 61745 HOT 6 0
--//HOT_FLAG='HOTCOPY94'
$ ./sql_id.sh 'select * from dept where deptno=10\0.94'
sql_text = select * from dept where deptno=10\0.94
full_hash_value(16) = 6b47602c1c49a6baacd71c5fe826ddaa
hash_value(10) = 3894861226
sql_id(32) = atpswbzn2drda
sql_id(32) = atpswbzn2drda
sql_id(32) = atpswbzn2drda
--//sql_idm以及full_hash_value完全對上。
3.驗證看看是否透過sid取模確定HOT_FLAG。
--//session 1:
SCOTT@book> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
295 7 63251 DEDICATED 63252 21 4 alter system kill session '295,7' immediate;
SCOTT@book> select mod(295 ,101)+1 from dual ;
MOD(295,101)+1
--------------
94
--//OK,完全正確。
4.總結:
--//sql語句使用使用DBMS_SHARED_POOL.MARKHOT標記熱的sql_id時,full_hash_value和sql_id的計算,就是在原來sql語句的基礎
--//上加上 . mod(sid,cpu_count/2)+1數字的字串,注前面的測試有誤,應該是cpu_count/2而不是cpu_count,特此更正。
--//原連結:http://blog.itpub.net/267265/viewspace-2675128/ => [20200211]使用DBMS_SHARED_POOL.MARKHOT與sql_id的計算.txt
--//如果設定隱含引數_kgl_hot_object_copies,變為加上 . mod(sid,_kgl_hot_object_copies)+1數字的字串。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2675201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20200212]使用DBMS_SHARED_POOL.MARKHOT與sql語句3.txtSQL
- [20200211]使用DBMS_SHARED_POOL.MARKHOT與sql語句2.txtSQL
- [20200211]使用DBMS_SHARED_POOL.MARKHOT與sql_id的計算.txtSQL
- [20200212]使用DBMS_SHARED_POOL.MARKHOT標識熱物件.txt物件
- [20200213]使用DBMS_SHARED_POOL.MARKHOT標識熱物件2.txt物件
- SQL Server與雲端計算(下)WCSQLServer
- SQL Server與雲端計算(上)UHSQLServer
- [20200126]使用DBMS_SHARED_POOL.MARKHOT與sql語句.txtSQL
- [20201117]使用DBMS_SHARED_POOL.MARKHOT與sql語句5.txtSQL
- [20201117]使用DBMS_SHARED_POOL.MARKHOT與sql語句6.txtSQL
- SQL 有序計算SQL
- SQL 的後計算指令碼SQL指令碼
- 雲端計算與使用者雲
- 使用SQL實現車流量的計算的示例程式碼SQL
- flex與bison的結合使用(計算器例子)Flex
- SQL 轉置計算SQL
- SQL Server日期計算SQLServer
- 改進的sql計算n王后SQL
- 邊緣計算與雲端計算的未來
- [20190823]關於CPU成本計算2.txt
- SQL Server日期計算(使用DATEADD和DATEDIFF函式)SQLServer函式
- 邊緣計算與雲端計算
- SQL Server日期計算 (轉)SQLServer
- 雲端計算與網格計算的深入比較
- 位運算與SQL實現SQL
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- 網格計算與雲端計算(PPT)
- Spark SQL 程式設計API入門系列之Spark SQL的作用與使用方式SparkSQL程式設計API
- 關於vue的使用計算屬性VS使用計算方法的問題Vue
- SQL面試必考——計算留存率SQL面試
- 在sql下計算tfidfSQL
- 計算SQL執行時間SQL
- 計算機叢集與網格計算計算機
- 後端請求中的非同步計算與平行計算後端非同步
- 如何使用SQL計算寶寶每次吃奶的時間間隔(文末含PPT)SQL
- 我與計算機計算機
- 與計算機行業的邂逅計算機行業
- sessions 與 processes 的計算關係Session