[20200211]使用DBMS_SHARED_POOL.MARKHOT与sql_id的计算.txt

--//以前写的,使用DBMS_SHARED_POOL.MARKHOT标记热的sql_id,这样相同的sql语句使用不同的sql_id.
--//链接:http://blog.itpub.net/267265/viewspace-2147197/ => [20171110]sql语句相同sql_id可以不同吗.
--//好奇心想知道,oracle这种情况下如何计算的sql_id的。

--//更正:sql语句使用使用DBMS_SHARED_POOL.MARKHOT标记热的sql_id时,full_hash_value和sql_id的计算,就是在原来sql语句的基础
--//上加上 . mod(sid,cpu_count/2)+1数字的字符串。
--//如果设置隐含参数_kgl_hot_object_copies,变为加上 . mod(sid,_kgl_hot_object_copies)+1数字的字符串。

1.环境:
SCOTT@book> @ &r/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

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                     8             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA         61745                     8             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.建立gdb脚本:
--//参考链接:http://blog.itpub.net/267265/viewspace-2665902/=>[20191127]表 full Hash Value的计算.txt
$ cat md5.gdb
set pagination off

break kggmd5Update
  commands
    printf "Length: %d\n",$rdx
    x/40xc $rsi
    c
  end

break kglComputeHash
  commands
    c
  end

break kggmd5Process
  commands
    c
  end

break kggmd5Finish
  commands
    c
  end

3.测试分析:
--//首先使用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
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
        58         49 54621                    DEDICATED 54622       28         23 alter system kill session '58,49' immediate;
--//spid=54622
--//session 2:
$ gdb -p 54622 -x md5.gdb

--//session 1:
--//测试前可以先执行Select * from dept where deptno=10;注意S大写sql语句与原来不同。
Select * from dept where deptno=10

SCOTT@book> select * from dept where deptno=10;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

@ dpc '' ''
--//输出略,查询sql_id='7sqgfqarnwk8h',与原来的完成不同。
        
4.观察gdb的输出:

--//session 3:
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)
------------- ----------------------------------- ---------- ---------------- ------------------
7sqgfqarnwk8h select * from dept where deptno=10           3               34          156172166
4xamnunv51w9j select * from dept where deptno=10           8               34          156172166
--//sql_id=7sqgfqarnwk8h.

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       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA             0 HOTCOPY11           3             0
select * from dept where deptno=10       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA         18704 HOTCOPY11           3             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA             0 HOT                 8             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA         61745 HOT                 8             0
--//可以发现新建立的sql语句FULL_HASH_VALUE=5196d0b7fe72e5ea7c59eeb2af4e4910,注意后面的HOT_FLAG='HOTCOPY11'.
--//0x4910  = 18704

--//session 2:
(gdb) c
Continuing.

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 35
0x7fffff1de9d8: 115 's' 101 'e' 108 'l' 101 'e' 99 'c'  116 't' 32 ' '  42 '*'
0x7fffff1de9e0: 32 ' '  102 'f' 114 'r' 111 'o' 109 'm' 32 ' '  100 'd' 101 'e'
0x7fffff1de9e8: 112 'p' 116 't' 32 ' '  119 'w' 104 'h' 101 'e' 114 'r' 101 'e'
0x7fffff1de9f0: 32 ' '  100 'd' 101 'e' 112 'p' 116 't' 110 'n' 111 'o' 61 '='
0x7fffff1de9f8: 49 '1'  48 '0'  0 '\000'        -13 '? 108 'l' 92 '\\' 107 'k' -64 '?
--//拼接起来就是 select * from dept where deptno=10\0;

Breakpoint 4, 0x00000000097f0830 in kggmd5Finish ()

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 21
0xbefbe20 <kggmd5padding.0>:    -128 '\200'     0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe28 <kggmd5padding.0+8>:  0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe30 <kggmd5padding.0+16>: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe38 <kggmd5padding.0+24>: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe40 <kggmd5padding.0+32>: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 8
0x7fffff1dc910: 24 '\030'       1 '\001'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0x7fffff1dc918: -40 '? -23 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'
0x7fffff1dc920: 32 ' '  -51 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'
0x7fffff1dc928: -40 '? -23 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'
0x7fffff1dc930: -64 '? -55 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'

Breakpoint 2, 0x000000000984457c in kglComputeHash ()

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 35
0x7fffff1de9d8: 115 's' 101 'e' 108 'l' 101 'e' 99 'c'  116 't' 32 ' '  42 '*'
0x7fffff1de9e0: 32 ' '  102 'f' 114 'r' 111 'o' 109 'm' 32 ' '  100 'd' 101 'e'
0x7fffff1de9e8: 112 'p' 116 't' 32 ' '  119 'w' 104 'h' 101 'e' 114 'r' 101 'e'
0x7fffff1de9f0: 32 ' '  100 'd' 101 'e' 112 'p' 116 't' 110 'n' 111 'o' 61 '='
0x7fffff1de9f8: 49 '1'  48 '0'  0 '\000'        -13 '? 108 'l' 92 '\\' 107 'k' -64 '?
--//拼接起来就是 select * from dept where deptno=10\0;

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 1
0x9e79fec <_2__STRING.98.0>:    46 '.'  0 '\000'        0 '\000'        0 '\000'        107 'k' 116 't' 99 'c'  110 'n'
0x9e79ff4 <_2__STRING.377.0+4>: 46 '.'  99 'c'  64 '@'  49 '1'  50 '2'  54 '6'  49 '1'  55 '7'
0x9e79ffc <_2__STRING.377.0+12>:        0 '\000'        0 '\000'        0 '\000'        0 '\000'        37 '%'  42 '*'  115 's' 102 'f'
0x9e7a004 <_2__STRING.366.0+4>: 108 'l' 103 'g' 115 's' 58 ':'  32 ' '  48 '0'  120 'x' 37 '%'
0x9e7a00c <_2__STRING.366.0+12>:        48 '0'  56 '8'  120 'x' 32 ' '  0 '\000'        0 '\000'        0 '\000'        0 '\000'
--//length=1 对应'.'

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 2
0x7fffff1dc460: 49 '1'  49 '1'  0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0x7fffff1dc468: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0x7fffff1dc470: -128 '\200'     -57 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'
0x7fffff1dc478: 49 '1'  41 ')'  -125 '\203'     9 '\t'  0 '\000'        0 '\000'        0 '\000'        0 '\000'
0x7fffff1dc480: -80 '? -55 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'
--//注意看这里,Length: 2,字符正好是'11'.

Breakpoint 4, 0x00000000097f0830 in kggmd5Finish ()

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 18
0xbefbe20 <kggmd5padding.0>:    -128 '\200'     0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe28 <kggmd5padding.0+8>:  0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe30 <kggmd5padding.0+16>: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe38 <kggmd5padding.0+24>: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0xbefbe40 <kggmd5padding.0+32>: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'

Breakpoint 1, 0x00000000097f09a8 in kggmd5Update ()
Length: 8
0x7fffff1dc2a0: 48 '0'  1 '\001'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0x7fffff1dc2a8: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0x7fffff1dc2b0: 32 ' '  -53 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'
0x7fffff1dc2b8: 0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'        0 '\000'
0x7fffff1dc2c0: 96 '`'  -61 '? 29 '\035'       -1 ''  -1 ''  127 '\177'      0 '\000'        0 '\000'

$ echo -e -n  'select * from dept where deptno=10\0.11' | md5sum | sed 's/  -//' | xxd -r -p | od -t x4 | sed  -n  -e 's/^0000000 //' -e 's/ //gp'
5196d0b7fe72e5ea7c59eeb2af4e4910
--//^_^,正好对上。

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       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA             0 HOTCOPY11           3             0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
select * from dept where deptno=10       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA         18704 HOTCOPY11           3             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA             0 HOT                 8             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA         61745 HOT                 8             0

--//也就是语句生成FULL_HASH_VALUE计算是原来sql语句(注意oracle会做一些格式化操作),后面加上\0  . v$db_object_cache.HOT_FLAG字段后面的数字。
--//讲的再通俗一点就是在原来基础上加入 . v$db_object_cache.HOT_FLAG字段后面的数字。

--//使用我写的脚本测试(注意要安装zsh):
$ ./sql_id.zsh 'select * from dept where deptno=10\0.11'
sql_text = select * from dept where deptno=10.11
full_hash_value(16) = 5196D0B7FE72E5EA7C59EEB2AF4E4910
hash_value(10) = 2941143312
sql_id(32) = 7sqgfqarnwk8h
sql_id(32) = 7sqgfqarnwk8h
--//sql_id=7sqgfqarnwk8h,也与前面查询v$sqlarea视图的结果一致。

4.继续探究,至于后面为什么加入11,估计与会话sid之类有关(猜测)。
--//退出gbd程序,继续分析。
--//首先我尝试退出再登录,我的测试环境sid会保持不变,serial#会发生变化。我执行select * from dept where deptno=10,查询
--//v$db_object_cache并没有生成新的sql_id.

SCOTT@book> @ spid
       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
        58         49 54621                    DEDICATED 54622       28         23 alter system kill session '58,49' immediate;

SCOTT@book> show parameter cpu_count
NAME      TYPE    VALUE
--------- ------- -----
cpu_count integer 24

SCOTT@book> select mod(58,24),mod(58,16) from dual ;
MOD(58,24) MOD(58,16)
---------- ----------
        10         10
--//是否就是这个sid与某个参数取模 10+1,因为没有见过HOT_FLAG='HOTCOPY0'的情况.至少我没有见过。
--//建立新的会话:
--//session 4:
SCOTT@book> @ spid
       SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
        30        115 55199                    DEDICATED 55200       26         44 alter system kill session '30,115' immediate;

SCOTT@book> select mod(30,24),mod(30,16) from dual ;
MOD(30,24) MOD(30,16)
---------- ----------
         6         14

SCOTT@book> select * from dept where deptno=10;
    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

--//session 3:
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';

SYS@book> /
NAME                                     HASH_VALUE FULL_HASH_VALUE                  NAMESPACE  CHILD_LATCH HOT_FLAG   EXECUTIONS INVALIDATIONS
---------------------------------------- ---------- -------------------------------- ---------- ----------- ---------- ---------- -------------
select * from dept where deptno=10       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA             0 HOTCOPY11           3             0
select * from dept where deptno=10       2941143312 5196d0b7fe72e5ea7c59eeb2af4e4910 SQL AREA         18704 HOTCOPY11           3             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA             0 HOT                 8             0
select * from dept where deptno=10        911274289 1431c45dbddbb9e74eaa74d53650f131 SQL AREA         61745 HOT                 8             0
select * from dept where deptno=10       3106222595 642c74f9bf38538acec7e363b9253203 SQL AREA             0 HOTCOPY7            1             0
select * from dept where deptno=10       3106222595 642c74f9bf38538acec7e363b9253203 SQL AREA         78339 HOTCOPY7            1             0
6 rows selected.
--//生成新的HOT_FLAG=HOTCOPY7.正好等于是mod(sid,cpu_count)+1.

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)
------------- ------------------------------------------------------------ ---------- ---------------- ------------------
7sqgfqarnwk8h select * from dept where deptno=10                                    3               34          156172166
4xamnunv51w9j select * from dept where deptno=10                                    8               34          156172166
cxjz3cfwkach3 select * from dept where deptno=10                                    1               34          156172166
~~~~~~~~~~~~~
--//sql_id=cxjz3cfwkach3,HOT_FLAG='HOTCOPY7'

$ echo -e -n  'select * from dept where deptno=10\0.7' | md5sum | sed 's/  -//' | xxd -r -p | od -t x4 | sed  -n  -e 's/^0000000 //' -e 's/ //gp'
642c74f9bf38538acec7e363b9253203

$ ./sql_id.zsh 'select * from dept where deptno=10\0.7'
v1=642C74F9BF38538ACEC7E363B9253203 v2=CEC7E363B9253203 v3=3106222595
sql_text = select * from dept where deptno=10.7
full_hash_value(16) = 642C74F9BF38538ACEC7E363B9253203
hash_value(10) = 3106222595
./sql_id.zsh:1: number truncated after 15 digits: CEC7E363B9253203
sql_id(32) = 0tv3y6sxt4nt0
sql_id(32) =  tv3y6sxt4nt0
--//脚本有错,先放一放.好像是V2变量里面第1个字符C不是数字,我记忆里好像是我使用服务器这个zsh版本的bug,晚上在家里测试看看。
--//使用另外的sql_id.sh脚本测试:

$ ./sql_id.sh 'select * from dept where deptno=10\0.7'
v1=642C74F9BF38538ACEC7E363B9253203 v2=CEC7E363B9253203 v3=B9253203
sql_text = select * from dept where deptno=10\0.7
full_hash_value(16) = 642C74F9BF38538ACEC7E363B9253203
hash_value(10) = 3106222595
sql_id(32) = cxjz3cfwkach3
sql_id(32) = cxjz3cfwkach3
sql_id(32) = cxjz3cfwkach3
--//正好对上。大家可以再打开新的会话测试,可以确定sql语句就是在原来基础上加入. mod(sid,cpu_count)+1数字的字符串。

总结:
--//上班太安静,无聊探究这个问题。
--//sql语句使用使用DBMS_SHARED_POOL.MARKHOT标记热的sql_id时,full_hash_value和sql_id的计算,就是在原来sql语句的基础上加上
--// . mod(sid,cpu_count)+1数字的字符串。
--//使用DBMS_SHARED_POOL.MARKHOT 标记热的sql语句,实际上就是使用空间换时间的做法,打散开来。但是我上午的测试可能存在太多争用
--//反而使用它更慢,有机会测试更多会话的情况。
--//也许因为加入运算的字符串采用 . mod(sid,cpu_count)+1数字的字符串,也许存在太多的冲突,反而更慢。

--//附上sql_id.sh脚本,里面包含几个从full_hash_value计算sql_id的方法:
$ cat sql_id.sh
#! /bin/bash
# calcucate sql_text of full_hash_value(16),hash_value(10),sql_id(32).
odebug=${ODEBUG:-0}

#sql_text=${1}'\0'
sql_text=${1}
v1=$(echo -e -n "$sql_text" | md5sum | sed 's/  -//' | xxd -r -p | od -t x4 |  sed   -n  -e 's/^0\+ //' -e 's/ //gp' | tr 'a-z' 'A-Z')
v2=${v1:(-16):16}
v3=${v2:(-8):8}
# v2=$(echo "obase=16;ibase=16; $v1 % 10000000000000000" | bc| tr -d '\\\r\n')
# v3=$(echo "obase=10;ibase=16; $v1 % 100000000" | bc| tr -d '\\\r\n')

if [ $odebug -eq 1 ] ; then
        echo v1=$v1 v2=$v2 v3=$v3
fi

echo "sql_text = $sql_text"
echo "full_hash_value(16) = $v1 "
echo "hash_value(10) = $(( 16#$v3 )) "

BASE32=($(echo {0..9} {a..z} | tr -d 'eilo'))
res=''
for i in $(echo "obase=32;ibase=16; $v2" | bc| tr -d '\\\r\n')
do
        res=${res}${BASE32[$(( 10#$i ))]}
done
echo "sql_id(32) = $(printf "%13s" $res | tr ' ' '0')"
echo "sql_id(32) = $(printf "%013s" $res)"

res1=$(eval $(echo "obase=32;ibase=16; $v2" | bc| tr -d '\\\r\n' | awk 'BEGIN{RS=" +"; printf "echo " }/./{printf "${BASE32[$(( 10#%02d))]} ", $1}' ))
res1=$(tr -d " " <<< $res1)
echo "sql_id(32) = $(printf "%013s" $res1)"

[20200211]使用DBMS_SHARED_POOL.MARKHOT与sql_id的计算.txt的更多相关文章

  1. [20171227]表的FULL_HASH_VALUE值的计算.txt

    [20171227]表的FULL_HASH_VALUE值的计算.txt --//sql_id的计算是使用MD5算法进行哈希,生成一个128位的Hash Value,其中低32位作为HASH VALUE ...

  2. zw版_Halcon图像交换、数据格式、以及超级简单实用的DIY全内存计算.TXT

    zw版_Halcon图像交换.数据格式.以及超级简单实用的DIY全内存计算.TXT Halcon由于效率和其他原因,内部图像采用了很多自有格式,提高运行速度,但在数据交换方面非常麻烦. 特别是基于co ...

  3. [20170611]关于数据块地址的计算.txt

    [20170611]关于数据块地址的计算.txt --//如果数据库出现一些问题,会在alert或者跟踪文件,或者屏幕出现一些错误提示.例如: ORA-00600: internal error co ...

  4. [20191127]表 full Hash Value的计算.txt

    [20191127]表 full Hash Value的计算.txt --//曾经做过表full Hash Value的计算,当时我是通过建立简单的schema以及表名的形式,使用hashcat破解o ...

  5. [20191115]oracle实例占用内存计算.txt

    [20191115]oracle实例占用内存计算.txt --//以前学习oracle数据库时,总想了解实例占用内存多少,我曾经在一些会议底下问过一位高手,对方说计算这个相对很难,许多东西是共享的.- ...

  6. [20191012]使用bash从sql_id计算hash_value.txt

    [20191012]使用bash从sql_id计算hash_value.txt --//没有什么实际意义,仅仅验证方法是否可行.--//sql_id的计算是使用MD5算法进行哈希,生成一个128位的H ...

  7. [20191011]通过bash计算sql语句的sql_id.txt

    [20191011]通过bash计算sql语句的sql_id.txt --//当我知道如何通过bash计算sql语句的full_hash_value ,就很想通过bash编程计算sql_id.当时受限 ...

  8. [20171110]sql语句相同sql_id可以不同吗.txt

    [20171110]sql语句相同sql_id可以不同吗.txt --//提一个问题,就是sql语句相同sql_id可以不同吗?--//使用dbms_shared_pool.markhot就可以做到. ...

  9. [20171031]markhot.txt

    [20171031]markhot.txt --//昨天看了https://jonathanlewis.wordpress.com/2017/10/02/markhot/,测试看看这样时候可以减少争用 ...

随机推荐

  1. Mabitis

    Mybatis 一.框架概念: Java框架,一个软件半成品,简单来说就是一个别人搭好的舞台,你来做表演,说白了Java框架就是封装好方便程序员操作的类,使项目的开发更简单,维护起来也更容易. 而My ...

  2. DFS或BFS(深度优先搜索或广度优先搜索遍历无向图)-04-无向图-岛屿数量

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...

  3. ios---scrollview用法总结

    一.使用步骤: 1.添加子组件到scrollview //必要步骤 2.设置clipsToBounds来确定超出范围是否被剪裁 (默认yes) self.scrolltest.clipsToBound ...

  4. Java 构造方法总结

    Java 构造方法总结 ①方法名和 类名相同 ②在方法名的前面没有返回值类型的声明 ③在方法中不能使用return语句返回一个值 ④在创建对象时,要调用new,如:book b1=new book() ...

  5. ios--->tableView的估算高度的作用

    ios中tableView的估算高度的作用 在ios7之后,tableView有了估算高度的这个概念及相关属性和方法:它的作用和使用场景是什么? 在tableview加载完数据渲染之后,考虑到滚动条的 ...

  6. 好机会,我要帮女同事解决Maven冲突问题

    任何一个故事起因最重要 任何一个职业,女生都有绝对的优势.更别提IT行业了,在部门中要是有女程序猿那肯定是香饽饽,备受呵护呀. 之前有一次,一位刚来的妹子遇到问题了,画风顿时就变成上面的图片了,群起而 ...

  7. No

    1.为什么A/D转换前需要采样保持电路,它的基本原理是什么? 因为被取样的信号是动态,随时改变的,而A/D转换需要时间,在这个转换的过程中,信号是变化的,为了弥补A/D转换的时间差,所以需要采样保持. ...

  8. DHCP服务器配置及测试

    1 DHCP服务器简介 DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,DHCP 协议主要是用来自动为局域网中的客户机分配TCP/IP 信息的网络 ...

  9. Go语言实现:【剑指offer】跳台阶

    该题目来源于牛客网<剑指offer>专题. 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 1阶:共1种跳法: 2阶 ...

  10. CAS 分析

    CAS是什么 (1) CAS(Compare and Swap) 比较并交换, 比较并交换是在多线程并发时用到的一种技术 (2) CAS是原子操作, 保证并发安全性, 而不是保证并发同步. (3) C ...