濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Oracle Arraysize設(shè)置對(duì)于邏輯讀的影響實(shí)例分析

Oracle Arraysize設(shè)置對(duì)于邏輯讀的影響實(shí)例分析

熱門標(biāo)簽:外呼電話系統(tǒng)用卡嗎 騰訊地圖標(biāo)注要費(fèi)用嗎 廣東營(yíng)銷智能外呼系統(tǒng)商家 N個(gè)你智能電銷機(jī)器人 車瑪仕極限運(yùn)動(dòng)場(chǎng)所地圖標(biāo)注 七日殺a19.5全地圖標(biāo)注 高德地圖標(biāo)注公司名字大全 地圖標(biāo)注怎么保存 電渠外呼系統(tǒng)

當(dāng)執(zhí)行一條SQL查詢的時(shí)候,為了獲得滿足的數(shù)據(jù),查詢?cè)谶@個(gè)過(guò)程中完成解析,綁定,執(zhí)行和提取數(shù)據(jù)等一系列步驟,這些步驟都是單獨(dú)執(zhí)行的,滿足條件的數(shù)據(jù)行必須由數(shù)據(jù)庫(kù)返回給應(yīng)用;對(duì)于任何大小的結(jié)果集,需要返回的數(shù)據(jù)行很可能不是在一次往返調(diào)用過(guò)程中傳遞給應(yīng)用的!

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

關(guān)于提取操作的機(jī)制,一次FETCH調(diào)用將會(huì)訪問(wèn)緩沖區(qū)緩存中的一個(gè)或多個(gè)數(shù)據(jù)塊,每次訪問(wèn)一個(gè)數(shù)據(jù)塊的時(shí)候,Oracle會(huì)在該塊中取出數(shù)據(jù)行然后在一次回路中返回給客戶端,這里對(duì)于一次返回的行數(shù)便是Arraysize(列大小),Arraysize表明了一次提取操作在網(wǎng)絡(luò)回路中傳輸?shù)目赡艿臄?shù)據(jù)行數(shù)。

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

-- 查看當(dāng)前的Arraysize
SQL> show arraysize
arraysize 15

SQL> set autotrace traceonly statistics
SQL> select * from dba_objects;

72457 rows selected.

Statistics
----------------------------------------------------------
     0 recursive calls
     0 db block gets
    7675 consistent gets
     5 physical reads
     0 redo size
  3463453 bytes sent via SQL*Net to client
   53549 bytes received via SQL*Net from client
    4832 SQL*Net roundtrips to/from client
     0 sorts (memory)
     0 sorts (disk)
   72457 rows processed

-- 設(shè)置Arraysize為50
SQL> set arraysize 50
SQL> /

72457 rows selected.

Statistics
----------------------------------------------------------
     15 recursive calls
     0 db block gets
    3618 consistent gets
     0 physical reads
     0 redo size
  3034066 bytes sent via SQL*Net to client
   16358 bytes received via SQL*Net from client
    1451 SQL*Net roundtrips to/from client
     0 sorts (memory)
     0 sorts (disk)
   72457 rows processed

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

1.邏輯讀次數(shù)大幅減小,由7675減至3618。
2.網(wǎng)絡(luò)往返次數(shù)由之前的4832次下降到只需要1451次。

需要注意的是這些改變都是與SQL語(yǔ)句本身無(wú)關(guān)的,Arraysize大小需要通過(guò)編程實(shí)現(xiàn),本例中使用SQL*Plus環(huán)境中的SET ARRAYSIZE命令,如果是Java應(yīng)用,可以通過(guò)設(shè)置Connection.SetdefaultRowPrefetch(n)來(lái)實(shí)現(xiàn)。

您可能感興趣的文章:
  • oracle中通配符和運(yùn)算符的使用方法介紹
  • oracle邏輯結(jié)構(gòu)分析
  • Oracle查看邏輯讀、物理讀資源占用排行的SQL語(yǔ)句
  • Oracle數(shù)據(jù)庫(kù)邏輯備份的SH文件
  • oracle邏輯運(yùn)算符與其優(yōu)先級(jí)簡(jiǎn)介

標(biāo)簽:大興安嶺 遼寧 長(zhǎng)沙 玉樹(shù) 贛州 來(lái)賓 蘇州 棗莊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle Arraysize設(shè)置對(duì)于邏輯讀的影響實(shí)例分析》,本文關(guān)鍵詞  Oracle,Arraysize,設(shè)置,對(duì)于,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Oracle Arraysize設(shè)置對(duì)于邏輯讀的影響實(shí)例分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Oracle Arraysize設(shè)置對(duì)于邏輯讀的影響實(shí)例分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    台南县| 仙居县| 云龙县| 兴隆县| 巴彦县| 手机| 宕昌县| 南江县| 怀远县| 遂昌县| 榆林市| 嘉善县| 周至县| 莒南县| 青海省| 邯郸县| 峡江县| 织金县| 岫岩| 昆山市| 河南省| 红原县| 姚安县| 卢龙县| 门源| 廊坊市| 锡林郭勒盟| 桐城市| 峡江县| 九寨沟县| 昌宁县| 册亨县| 丹江口市| 孙吴县| 墨竹工卡县| 合阳县| 建德市| 蒲江县| 秦皇岛市| 永川市| 阜康市|