|
導(dǎo)讀數(shù)據(jù)庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數(shù)據(jù)進(jìn)行新增、截取、更新、刪除等操作。所謂“數(shù)據(jù)庫”是以一定方式儲存在一起、能與多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)... 數(shù)據(jù)庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數(shù)據(jù)進(jìn)行新增、截取、更新、刪除等操作。所謂“數(shù)據(jù)庫”是以一定方式儲存在一起、能與多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。 statspack報(bào)告數(shù)據(jù)結(jié)果解釋 本人將最近在學(xué)習(xí)性能調(diào)優(yōu)時(shí),所用筆記總結(jié)如下,歡迎批評指正 本文將不斷更新,歡迎補(bǔ)充。(所列數(shù)據(jù)僅用于便于說明,沒有實(shí) 際意義) 一、statspack 輸出結(jié)果中必須查看的十項(xiàng)內(nèi)容 1、負(fù)載間檔(Load profile) 2、實(shí)例效率點(diǎn)擊率(Instance efficiency hit ratios) 3、首要的5個(gè)等待事件(Top 5 wait events) 4、等待事件(Wait events) 5、閂鎖等待 6、首要的SQL(Top sql) 7、實(shí)例活動(Instance activity) 8、文件I/O(File I/O) 9、內(nèi)存分配(Memory allocation) 10、緩沖區(qū)等待(Buffer waits) 二、輸出結(jié)果解釋 1、報(bào)表頭信息 數(shù)據(jù)庫實(shí)例相關(guān)信息,包括數(shù)據(jù)庫名稱、ID、版本號及主機(jī)等信息 Quote: STATSPACK report for DB Name DB Id Instance Inst Num Release Cluster Host ------------ ----------- ------------ -------- ----------- ------- ------------ PORMALS 3874352951 pormals 1 9.2.0.4.0 NO NJLT-SERVER1 Snap Id Snap Time Sessions Curs/Sess Comment ------- ------------------ -------- --------- ------------------- Begin Snap: 36 18-7月 -04 20:41:02 29 19.2 End Snap: 37 19-7月 -04 08:18:27 24 15.7 Elapsed: 697.42 (mins) Cache Sizes (end) ~~~~~~~~~~~~~~~~~ Buffer Cache: 240M Std Block Size: 8K Shared Pool Size: 96M Log Buffer: 512K 2、負(fù)載間檔 該部分提供每秒和每個(gè)事物的統(tǒng)計(jì)信息,是監(jiān)控系統(tǒng)吞吐量和負(fù)載變化的重要部分 Quote: Load Profile ~~~~~~~~~~~~ Per Second(秒) Per Transaction事物 --------------- --------------- Redo size: 148.46 3,702.15 Logical reads: 1,267.94 31,619.12 Block changes: 1.01 25.31 Physical reads: 4.04 100.66 Physical writes: 4.04 100.71 User calls: 13.95 347.77 Parses: 4.98 124.15 Hard parses: 0.02 0.54 Sorts: 1.33 33.25 Logons: 0.00 0.02 Executes: 2.46 61.37 Transactions: 0.04 % Blocks changed per Read: 0.08 Recursive Call %: 30.38 Rollback per transaction %: 0.42 Rows per Sort: 698.23 說明: Redo size:每秒產(chǎn)生的日志大小(單位字節(jié)),可標(biāo)志數(shù)據(jù)庫任務(wù)的繁重與否 Logical reads:平?jīng)Q每秒產(chǎn)生的邏輯讀,單位是block block changes:每秒block變化數(shù)量,數(shù)據(jù)庫事物帶來改變的塊數(shù)量 Physical reads:平均每秒數(shù)據(jù)庫從磁盤讀取的block數(shù) Physical writes:平均每秒數(shù)據(jù)庫寫磁盤的block數(shù) User calls:每秒用戶call次數(shù) Parses:每秒解析次數(shù),近似反應(yīng)每秒語句的執(zhí)行次數(shù) 軟解析每秒超過300次意味著你的"應(yīng)用程序"效 率不高,沒有使用soft soft parse,調(diào)整session_cursor_cache Hard parses:每秒產(chǎn)生的硬解析次數(shù) Sorts:每秒產(chǎn)生的排序次數(shù) Executes:每秒執(zhí)行次數(shù) Transactions:每秒產(chǎn)生的事務(wù)數(shù),反映數(shù)據(jù)庫任務(wù)繁重與否 [page_break]3、實(shí)例命中率 該部分可以提前找出ORACLE潛在將要發(fā)生的性能問題,很重要 Quote: Instance Efficiency Percentages (Target 100%) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait %: 100.00 Redo NoWait %: 100.00 Buffer Hit %: 99.96 In-memory Sort %: 99.14 Library Hit %: 99.53 Soft Parse %: 99.57 Execute to Parse %: -102.31 Latch Hit %: 100.00 Parse CPU to Parse Elapsd %: 81.47 % Non-Parse CPU: 96.46 說明: Buffer Nowait %:在緩沖區(qū)中獲取Buffer的未等待比率 Redo NoWait %:在Redo緩沖區(qū)獲取Buffer的未等待比率 Buffer Hit %:數(shù)據(jù)塊在數(shù)據(jù)緩沖區(qū)中得命中率,通常應(yīng)在90%以上,否則,需要調(diào)整 In-memory Sort %:在內(nèi)存中的排序率 Library Hit %:主要代表sql在共享區(qū)的命中率,通常在95%以上,否,需要要考慮加 大共享池,綁定變量,修改cursor_sharing等參數(shù)。 Soft Parse %:近似看作sql在共享區(qū)的命中率,小于<95%,需要考慮到綁定,如果低于80%, 那么就可能sql基本沒有被重用 Execute to Parse %:sql語句解析后被重復(fù)執(zhí)行的次數(shù),如果過低,可以考慮設(shè)置 session_cached_cursors參數(shù) Parse CPU to Parse Elapsd %:解析實(shí)際運(yùn)行事件/(解析實(shí)際運(yùn)行時(shí)間+解析中等待資源時(shí)間) 越高越好 % Non-Parse CPU:查詢實(shí)際運(yùn)行時(shí)間/(查詢實(shí)際運(yùn)行時(shí)間+sql解析時(shí)間),太低表示解析消耗時(shí)間過多。 Quote: Shared Pool Statistics Begin End ------ ------ Memory Usage %: 33.79 57.02 % SQL with executions>1: 62.62 73.24 % Memory for SQL w/exec>1: 64.55 78.72 Shared Pool相關(guān)統(tǒng)計(jì)數(shù)據(jù) Memory Usage %:共享池內(nèi)存使用率,應(yīng)該穩(wěn)定在75%-90%間,太小浪費(fèi)內(nèi)存,太大則內(nèi)存不足。 % SQL with executions>1:執(zhí)行次數(shù)大于1的sql比率,若太小可能是沒有使用bind variables。 % Memory for SQL w/exec>1:也即是memory for sql with execution > 1:執(zhí)行次數(shù)大于1的sql 消耗內(nèi)存/所有sql消耗的內(nèi)存 4、首要等待事件 常見等待事件說明: oracle等待事件是衡量oracle運(yùn)行狀況的重要依據(jù)及指示,主要有空閑等待事件和非空閑等待事件 ;空閑等待事件是oracle正等待某種工作,在診斷和優(yōu)化數(shù)據(jù)庫時(shí)候,不用過多注意這部分事件, 非空閑等待事件專門針對oracle的活動,指數(shù)據(jù)庫任務(wù)或應(yīng)用程序運(yùn)行過程中發(fā)生的等待,這些等待事件是我們在調(diào)整數(shù)據(jù)庫應(yīng)該關(guān)注的。 比較影響性能常見等待事件 db file scattered read 該事件通常與全表掃描有關(guān)。因?yàn)槿頀呙枋潜环湃雰?nèi)存中進(jìn)行的進(jìn)行的, 通常情況下它不可能被放入連續(xù)的緩沖區(qū)中,所以就散布在緩沖區(qū)的緩存中。該指數(shù)的數(shù)量過大說明 缺少索引或者限制使用索引。這種情況也可能是正常的,因?yàn)閳?zhí)行全表掃描可能比索引掃描效率更高。 當(dāng)系統(tǒng)存在這些等待時(shí),需要通過檢查來確定全表掃描是否必需的來調(diào)整。可以嘗試將較小的表放入 緩存keep中,避免反復(fù)讀取它們。 db file sequential read 該事件說明在單個(gè)數(shù)據(jù)塊上大量等待,該值過高通常是由于表間連接順序很糟糕,或者使用了非選 擇性索引。通過將這種等待與statspack報(bào)表中已知其它問題聯(lián)系起來(如效率不高的sql),通過檢查確 保索引掃描是必須的,并確保多表連接的連接順序來調(diào)整 buffer busy wait 當(dāng)緩沖區(qū)以一種非共享方式或者如正在被讀入到緩沖時(shí),就會出現(xiàn)該等待.該值不應(yīng)該大于1%,確認(rèn) 是不是由于熱點(diǎn)塊造成(如果是可以用反轉(zhuǎn)索引,或者用更小塊大小) latch free 閂鎖是底層的隊(duì)列機(jī)制(更加準(zhǔn)確的名稱應(yīng)該是互斥機(jī)制),用于保護(hù)系統(tǒng)全局區(qū)(SGA)共享內(nèi)存結(jié)構(gòu) 。閂鎖用于防止對內(nèi)存結(jié)構(gòu)的并行訪問。如果閂鎖不可用,就會記錄一次閂鎖丟失。絕大多數(shù)得閂鎖問題 都與使用綁定變量失敗(庫緩存閂鎖)、生成重作問題(重執(zhí)行分配閂鎖)、緩存的爭用問題(緩存LRU鏈) 以 及緩存的熱數(shù)據(jù)寬塊(緩存鏈)有關(guān)。當(dāng)閂鎖丟失率高于0.5%時(shí),需要調(diào)整這個(gè)問題。 log buffer space 日志緩沖區(qū)寫的速度快于LGWR寫REDOFILE的速度,可以增大日志文件大小,增加日志緩沖區(qū)的大小,或 者使用更快的磁盤來寫數(shù)據(jù)。 logfile switch 通常是因?yàn)闅w檔速度不夠快,需要增大重做日志 log file sync 當(dāng)一個(gè)用戶提交或回滾數(shù)據(jù)時(shí),LGWR將會話得重做操作從日志緩沖區(qū)填充到日志文件中,用戶的進(jìn)程 必須等待這個(gè)填充工作完成。為減少這個(gè)等待事件,須一次提交更多記錄,或者將重做日志REDO LOG 文件 訪在不同的物理磁盤上。 全新的路由器不僅讓你更穩(wěn)定快速地連接無線網(wǎng)絡(luò),更可以讓家中的智能設(shè)備連接在一起。 |
溫馨提示:喜歡本站的話,請收藏一下本站!