国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

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

2020-07-26 14:19:13
字體:
供稿:網(wǎng)友

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

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

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

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

-- 查看當(dāng)前的ArraysizeSQL> show arraysizearraysize 15SQL> set autotrace traceonly statisticsSQL> 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為50SQL> set arraysize 50SQL> /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

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 贵定县| 珲春市| 玉环县| 墨江| 汕尾市| 轮台县| 镇赉县| 鄯善县| 大邑县| 长泰县| 彭水| 双牌县| 井研县| 白城市| 安龙县| 福贡县| 探索| 寿阳县| 平潭县| 余干县| 甘南县| 广灵县| 锡林浩特市| 上蔡县| 盖州市| 华蓥市| 罗田县| 海门市| 阳朔县| 广德县| 浑源县| 丰县| 新蔡县| 丘北县| 清远市| 盐城市| 独山县| 荥阳市| 文山县| 新干县| 广宗县|