日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

9i DB_FILE_MULTIBLOCK_READ_COUNT参数和extent大小的设置

發布時間:2024/9/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 9i DB_FILE_MULTIBLOCK_READ_COUNT参数和extent大小的设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle通過兩種方式從表中獲取數據:

·????????? 通過ROWID(通常使用索引掃描時)

·????????? 通過全表掃描

如果通過ROWID讀取數據,表中的區間數就不是讀性能的一個因素(如果使用并行查詢,那么一個表中有較多的區間的數量可以明顯提高I/O的性能),Oracle將通過ROWID直接找到需要的行,并獲取相應數據。

如果是全表掃描,那么區間的尺寸大小就有可能導致性能問題。因為全表掃描時,Oracle會一次讀取多個Blocks。每次讀取的塊數將受初始化參數DB_FILE_MULTIBLOCK_READ_COUNT和操作系統的I/O緩沖區大小的限制。比如說,如果Oracle Block的大小是4KB,操作系統I/O緩沖區大小是64KB,那么在全表掃描時每次最多可以讀取16各塊(Oracle Blocks),所以此時將DB_FILE_MULTIBLOCK_READ_COUNT的值設置為超過16也改變不了全表掃描的性能了。

通常,設置DB_FILE_MULTIBLOCK_READ_COUNT參數是如下考慮的:

(1)???????? 使用一個單獨的數據文件創建一個新的表空間

(2)???????? 在該表空間中創建一個單獨的未索引的表

(3)???????? 查詢V$FILESTAT以驗證該測試的初始統計值

(4)???????? 在表上執行全表掃描

(5)???????? 查詢V$FILESTAT以確定該測試的終止統計值,并從中減去開始統計值。將PhyBlkRds值除以PhyRds以確定有效的多塊讀計數。

(6)???????? 刪除這個用于測試的表空間

C:\>sqlplus "/as sysdba"

?

SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 6月 28 10:11:22 2003

?

Copyright (c) 1982, 2002, Oracle Corporation.? All rights reserved.

?

已連接到空閑例程。

?

SQL> startup

ORACLE 例程已經啟動。

?

Total System Global Area?? 93395628 bytes

Fixed Size?????????????????? 453292 bytes

Variable Size????????????? 67108864 bytes

Database Buffers?????????? 25165824 bytes

Redo Buffers???????????????? 667648 bytes

數據庫裝載完畢。

數據庫已經打開。

SQL> show parameter db_block_size;

?

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ---------------------

db_block_size??????????????????????? integer???? 8192

SQL> show parameter DB_FILE_MULTIBLOCK_READ_COUNT;

?

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ----------

db_file_multiblock_read_count??????? integer???? 16

SQL>

?

使用一個單獨的數據文件創建一個新的表空間:

SQL> create tablespace lunar

? 2? datafile 'd:\lunar.dbf' size 10m

? 3? default storage(initial 1m next 1m pctincrease 0);

?

表空間已創建。

?

在該表空間中創建一個單獨的未索引的表:

SQL> create table lunar

? 2? tablespace lunar

? 3? as select * from dba_objects;

?

表已創建。

?

SQL> select relative_fno from dba_data_files

? 2? where tablespace_name='LUNAR';

?

RELATIVE_FNO

------------

????????? 15

?

查詢V$FILESTAT以驗證該測試的初始統計值:

SQL> select phyrds,phyblkrd from v$filestat

? 2? where file#=15;

?

??? PHYRDS?? PHYBLKRD

---------- ----------

???????? 0????????? 0

?

在表上執行全表掃描:

SQL> select count(*) from lunar;

?

? COUNT(*)

----------

???? 27547

?

查詢V$FILESTAT以確定該測試的終止統計值:

SQL> select phyrds,phyblkrd from v$filestat

? 2?? where file#=15;

?

??? PHYRDS?? PHYBLKRD

---------- ----------

??????? 24??????? 376

?

SQL>

?

PHYRDS 和 PHYBLKRD 的初始統計的值都是0;

PHYRDS 和 PHYBLKRD 的終止統計的值分別是24和 376;

PHYRDS 的終止統計的值 - PHYRDS 的初始統計的值 =24;

PHYBLKRD 的終止統計的值 - PHYBLKRD 的初始統計的值 =376;

PHYBLKRD 的差值 / PHYRDS 的差值 = 15.67

所以,有效的多塊讀計數是16

需要注意的是,如果不是用新的表空間測試,那么測試得到第3步和第5步的差值后,在會話級改變DB_FILE_MULTIBLOCK_READ_COUNT參數,然后再次得到第3步和第5步的差值,并重復測過程。

記住,不要將DB_FILE_MULTIBLOCK_READ_COUNT參數設置的比計算的值高。

??

設置區間尺寸大小的考慮思路應該是合理的利用Oracle的能力以便在全表掃描時執行多塊存取,同時讀操作又是不能跨區間的。舉個例子,假設操作系統I/O緩沖區大小是64KB,考察讀取一個640KB大小的表,如果設置為每個區間64KB,一共10個區間,如果執行全表掃描,則Oracle需要10次讀操作(相當于一次讀一個區間);如果設置為一個640KB的區間,則Oracle還是需要10次讀操作(因為操作系統I/O緩沖區大小是64KB),可見壓縮區間并不能提高性能;如果設置為每個區間80KB,一共8個區間,則每個區間Oracle需要讀兩次,第一次讀64KB,第二次讀這個區間剩余的16KB(讀操作不能跨區間),所以總共需要16次讀操作(相當于一次讀一個區間)。區間尺寸的設置對性能的影響是顯而易見的。

???? 綜上,總結起來設置區間大小時需要考慮下面的問題:

·????????? 創建明顯大于或者等于操作系統I/O緩沖區大小的區間(最好是操作系統I/O緩沖區大小的整數倍)。這樣,如果區間非常大,即使區間大小不是操作系統I/O緩沖區大小的整倍數,也只需要很少的附加讀操作(如果上面的640KB和80KB的差異)。

·????????? 設置DB_FILE_MULTIBLOCK_READ_COUNT以充分利用操作系統I/O緩沖區的大小。應考慮DB_FILE_MULTIBLOCK_READ_COUNT <= 操作系統I/O緩沖區 / Oracle Block的大小,如果DB_FILE_MULTIBLOCK_READ_COUNT設置的太大,會使優化器認為全表掃描更有效而改變執行計劃,然后實際情況并非如此。

·????????? 如果必須創建小的區間,創建其大小是操作系統I/O緩沖區大小的整數倍

轉載于:https://www.cnblogs.com/cav5lier/archive/2013/06/13/3134063.html

總結

以上是生活随笔為你收集整理的9i DB_FILE_MULTIBLOCK_READ_COUNT参数和extent大小的设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。