一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Oracle - Oracle Arraysize設置對于邏輯讀的影響實例分析

Oracle Arraysize設置對于邏輯讀的影響實例分析

2019-12-11 15:01junjie Oracle

這篇文章主要介紹了Oracle Arraysize設置對于邏輯讀的影響實例分析,通過設置Arraysize大幅減少了邏輯讀的次數和網絡往返次數,需要的朋友可以參考下

當執行一條SQL查詢的時候,為了獲得滿足的數據,查詢在這個過程中完成解析,綁定,執行和提取數據等一系列步驟,這些步驟都是單獨執行的,滿足條件的數據行必須由數據庫返回給應用;對于任何大小的結果集,需要返回的數據行很可能不是在一次往返調用過程中傳遞給應用的!

每次調用過程中,數據庫與客戶端之間的往返回路數將一定層次上影響總的響應時間,其中除了提取數據(FETCH)步驟,其余步驟(解析,綁定,執行)都只執行一次,這也是必要的,Oracle需要獲得滿足查詢條件的所有數據結果從而執行多次提取操作。

關于提取操作的機制,一次FETCH調用將會訪問緩沖區緩存中的一個或多個數據塊,每次訪問一個數據塊的時候,Oracle會在該塊中取出數據行然后在一次回路中返回給客戶端,這里對于一次返回的行數便是Arraysize(列大小),Arraysize表明了一次提取操作在網絡回路中傳輸的可能的數據行數。

分析Arraysize的機制我們可以得知Arraysize對于邏輯讀的一個基本的影響,如果在應用中相應的提高Arraysize的大小,相比之前的設置,每次從數據塊中獲取的行數將對應得到提高,相同行數情況下,訪問數據塊的次數自然減小,邏輯讀也就相應的降低;實際情況也是如此。

  1. -- 查看當前的Arraysize 
  2. SQL> show arraysize 
  3. arraysize 15 
  4.   
  5. SQL> set autotrace traceonly statistics 
  6. SQL> select * from dba_objects; 
  7.   
  8. 72457 rows selected. 
  9.   
  10. Statistics 
  11. ---------------------------------------------------------- 
  12.      0 recursive calls 
  13.      0 db block gets 
  14.     7675 consistent gets 
  15.      5 physical reads 
  16.      0 redo size 
  17.   3463453 bytes sent via SQL*Net to client 
  18.    53549 bytes received via SQL*Net from client 
  19.     4832 SQL*Net roundtrips to/from client 
  20.      0 sorts (memory) 
  21.      0 sorts (disk) 
  22.    72457 rows processed 
  23.   
  24. -- 設置Arraysize為50 
  25. SQL> set arraysize 50 
  26. SQL> / 
  27.   
  28. 72457 rows selected. 
  29.   
  30. Statistics 
  31. ---------------------------------------------------------- 
  32.      15 recursive calls 
  33.      0 db block gets 
  34.     3618 consistent gets 
  35.      0 physical reads 
  36.      0 redo size 
  37.   3034066 bytes sent via SQL*Net to client 
  38.    16358 bytes received via SQL*Net from client 
  39.     1451 SQL*Net roundtrips to/from client 
  40.      0 sorts (memory) 
  41.      0 sorts (disk) 
  42.    72457 rows processed 

上面的測試我以SQL*Plus為例,選取了對dba_objects表訪問的查詢,SQL查詢的結果集是相同的,這時將Arraysize的值從默認的15提高至50,就看到了非常明顯的變化:

1.邏輯讀次數大幅減小,由7675減至3618。

2.網絡往返次數由之前的4832次下降到只需要1451次。

需要注意的是這些改變都是與SQL語句本身無關的,Arraysize大小需要通過編程實現,本例中使用SQL*Plus環境中的SET ARRAYSIZE命令,如果是Java應用,可以通過設置Connection.SetdefaultRowPrefetch(n)來實現。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品久久久久久网站 | 色综合中文字幕在线亚洲 | 四虎国产视频 | 18日本xxxxxxⅹxx96| 欧美在线播放成人免费 | 精品视频久久久久 | 韩日一区二区三区 | 亚欧精品在线观看 | 久青草国产在线观看视频 | 国产欧美va欧美va香蕉在线观 | 日本免费不卡在线一区二区三区 | 猛操女人 | hd性欧美俱乐部中文 | 免费在线观看视频 | 亚洲酒色1314狠狠做 | 天堂在线中文字幕 | 免费的伦理片 | 日韩不卡一区二区三区 | 欧美日韩精品乱国产 | 久久久精品免费视频 | 四虎伊人| juy_661佐佐木明希在线播放 | 草莓视频网站18勿进 | 日本国产最新一区二区三区 | 亚洲精品视频免费在线观看 | 91短视频在线播放 | 日韩免费一区 | 高h短篇辣肉各种姿势bl | 天天久久综合 | 免费观看国产大片资源视频 | 韩国最新三级网站在线播放 | 99免费视频 | 九九在线精品视频 | 忘忧草秋观看未满十八 | 大陆性出航| 美女张开腿让男人桶的 视频 | 日本欧美大码a在线视频播放 | 91精品免费国产高清在线 | 久久久久九九 | 大肥婆丰满大肥奶bbw肥 | 好大好深好涨好烫还要 |