日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]根據(jù)statspack報(bào)表優(yōu)化oracle數(shù)據(jù)庫(kù)實(shí)例之“DB file scattered read”oracle的等待事件是衡量oracle運(yùn)行狀況的重要依據(jù)及指標(biāo)。等待事件的概念是在oracle7

根據(jù)statspack報(bào)表優(yōu)化oracle數(shù)據(jù)庫(kù)實(shí)例之“DB file scattered read”

oracle的等待事件是衡量oracle運(yùn)行狀況的重要依據(jù)及指標(biāo)。

等待事件的概念是在oracle7.0.1.2中引入的,大致有100個(gè)等待事件。在oracle8.0中這個(gè)數(shù)目增加到了大約150個(gè),在oracle8i中大約有200個(gè)事件,到oracle9i時(shí),等待事件增加到360個(gè)。

Oracle的等待事件主要有兩種類(lèi)型,即空閑(idle)等待事件和非空閑(non-idle)等待事件??臻e事件指oracle正在等待某種工作,在診斷和優(yōu)化數(shù)據(jù)庫(kù)的時(shí)候,我們不用過(guò)多注意這部分事件。

非空閑等待事件專(zhuān)門(mén)針對(duì)oracle的活動(dòng),指數(shù)據(jù)庫(kù)任務(wù)或應(yīng)用運(yùn)行過(guò)程中發(fā)生的等待,這些等待事件是我們?cè)谡{(diào)整數(shù)據(jù)庫(kù)的時(shí)候應(yīng)該關(guān)注與研究的。

常見(jiàn)的非空閑等待事件有:db file scattered read; db file sequential read; buffer busy waits; free buffer waits; enqueue; latch free; log file parallel write; log file sync.

Db file scattered read的產(chǎn)生


本文主要解釋了db file scattered read-DB文件分散讀取等待事件產(chǎn)生的原因與優(yōu)化的方法。

Db file scattered read等待事件通常顯示與全表掃描相關(guān)的等待。

當(dāng)數(shù)據(jù)庫(kù)進(jìn)行全表掃描時(shí),基于性能的考慮,數(shù)據(jù)會(huì)分散(scattered)讀入buffer cache。如果這個(gè)等待事件筆記哦顯著,可能說(shuō)明對(duì)于某些全表掃描的表,沒(méi)有創(chuàng)建索引或者索引沒(méi)有有效利用。我們可能需要檢查這些數(shù)據(jù)表以便確定是否進(jìn)行了正確的設(shè)置。

然而這個(gè)等待事件并不總意味著性能底下,在某些條件下oracle會(huì)主動(dòng)使用全表掃描來(lái)替換索引掃描以提高性能,這和訪問(wèn)的數(shù)據(jù)量有關(guān),在CBO下oracle會(huì)進(jìn)行更為智能的選擇,在RBO下oracle更傾向于使用索引。

因?yàn)槿頀呙璞恢糜贚RU(least recently used)列表的冷端(cold end),對(duì)于頻繁訪問(wèn)的較小的數(shù)據(jù)表,可以選擇把他們cache到內(nèi)存中,以避免反復(fù)讀取。

有兩種方法可以幫助我們找出全表掃描較多的sql語(yǔ)句。

Statspack的報(bào)表


Top 5 Timed Events

~~~~~~~~~~~~~~~~~~???????????????????????????????????????????????????? % Total

Event?????????????????????????????????????????????? Waits??? Time (s) Ela Time

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

CPU time??????? ??????????????????????????????????????????????????246??? 50.79

db file sequential read??????????????????????????? 98,012???????? 208??? 43.01

db file scattered read????????????????????????????? 1,001????????? 11???? 2.20

direct path write????????????????? ?????????????????2,171?????????? 7???? 1.52

control file parallel write???????????????????????? 1,404?????????? 3????? .56

―――――――――


Buffer Gets??? Executions? Gets per Exec? %Total Time (s)? Time (s) Hash Value

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

????? 4,392,146??????????? 1??? 4,392,146.0?? 39.6??? 64.73??? 247.08? 719265629

Module: msmdsrv.exe

SELECT "DW"."D_TIME_DAY"."DAY_ID" , "DW"."D_PRODUCT_FUNCTION_SIM

S"."PRODUCT_FUNCTION_ID" , "DW"."D_PRODUCT_SCREEN_SIMS"."PRODUCT

_SCREEN_ID" , "DW"."D_PRODUCT_BRAND_SIMS"."ALL_ID" , "DW"."D_PRO

DUCT_BRAND_SIMS"."PRODUCT_BRAND_ID" , "DW"."D_ORG_STORE_CHANNEL_

TYPE_SIMS"."ALL_ID" , "DW"."D_ORG_STORE_CHANNEL_TYPE_SIMS"."CHAN


?

????? 1,092,126??????????? 6????? 182,021.0??? 9.8???? 8.54????? 8.33 2845961438

Module: JDBC Thin Client

??????????????????? select

???? bs.model_name,??????????????????????? decode(grouping(bs.fu

nction_name)+grouping(bs.spec_name)+ grouping(bs.screen_name)+gr

ouping(bs.model_name),????????????????? ??????1,bs.function_name

?||bs.spec_name ||bs.screen_name ||'小計(jì)',


?

??????? 625,322??????????? 2????? 312,661.0??? 5.6??? 16.21???? 24.55 4097549484

Module: JDBC Thin Client

??????????????????? select

???? bs.spec_name,??????????????????????? decode(grouping(bs.fun

ction_name)+grouping(bs.spec_name)+ grouping(bs.screen_name),

??????????????????????? 1 ,bs.function_name ||bs.spec_name ||'小

計(jì)',??????????????????????? 2, bs.function_name ||'小計(jì)',


?

??????? 604,296?????????? 14?????? 43,164.0??? 5.4??? 15.89???? 15.55 3794571418

Module: JDBC Thin Client

?select???????????? ??decode(grouping(ttt.category_name)+groupin

g(ttt.function_name)+grouping(ttt.spec_name)+grouping(ttt.model_

name)+grouping(ttt.is_master),0,ttt.model_name,2,ttt.category_na

me||'-'||ttt.function_name||'-'||ttt.spec_name||'-小計(jì)',3,ttt.ca

tegory_name||'-'||ttt.function_name||'-小計(jì)',4,ttt.category_name


?

??????? 560,367?????????? 29?????? 19,323.0??? 5.1???? 2.72????? 2.74 1125417254

select r.ID,r.NAME,r.INFORMATION from USER_USERGROUP u,ROLE r,US

ERGROUP_ROLE

d u.USERID= :1


?

??????? 520,226?????????? 90??????? 5,780.3??? 4.7??? 11.52???? 14.24? 645606369

Module: JDBC Thin Client

BEGIN ctl.pkg_public_int.get_data(:1,:2,:3,:4) ; END;


?

??????? 367,777??????????? 2????? 183,888.5??? 3.3???? 3.10????? 3.75 1644183172

Module: JDBC Thin Client

??????????????????? select

???? bs.model_name,??????????????????????? decode(grouping(bs.fu

nction_name)+grouping(bs.spec_name)+ grouping(bs.screen_name)+gr

ouping(bs.model_name),??????????????????????? 1,bs.function_name

?||bs.spec_name ||bs.screen_name ||'小計(jì)',


?

??????? 360,107??????????? 2????? 180,053.5??? 3.2???? 2.80????? 2.74 2652674913

―――――――――――――――

注意到以上很多查詢導(dǎo)致的Buffer Gets都非常龐大,我們非常有理由懷疑索引存在問(wèn)題,甚至缺少必要的索引。以上記錄的是sql的片段,通過(guò)hash value值結(jié)合v$sqltext我們可以獲得完整的sql語(yǔ)句。


?

SELECT * FROM v$sqltext WHERE hash_value = 4097549484


ORDER BY piece


?

V$session_longops動(dòng)態(tài)性能視圖


??? V$session_longops動(dòng)態(tài)性能視圖中記錄了長(zhǎng)時(shí)間運(yùn)行(超過(guò)6秒)的事務(wù),可能很多是全表掃描操作(不管怎樣,這部分信息都值得我們注意)。當(dāng)db file scattered read等待時(shí)間比較顯著時(shí),可以結(jié)合v$session_longops視圖來(lái)進(jìn)行診斷。

1,? 檢索出長(zhǎng)時(shí)間運(yùn)行事件相關(guān)表

??? SELECT target,COUNT(*) c FROM v$session_longops


GROUP BY target


ORDER BY c DESC


Target?????????? c

ODS.SM_SALES??? 26

DW.FS_DISTRIBUTION_BRANCH_PRODUCT 16

ODS.TL_PICKLISTITEM???? 13

ODS.CR_SHIPMENT_ITEM 12

ODS.CR_SHIPMENT_STATUS??? 12

ODS.CR_ARP_PLAN??? 11

ODS.CR_FACILITY_DAILY_PSI_SUMMARY??? 11

ODS.CR_RECEIPT_BALANCE_DAILY_D 11

ODS.CR_SHIPMENT_ATTRIBUTE???? 11

ODS.CR_ORDER_INFO????? 11

ODS.CR_ORDER_HEADER 11

TODS.CR_RECEIPT_ATTRIBUTE???? 11

TODS.CR_PARTY_ATTRIBUTE?? 11

ODS.CR_SHIPMENT??? 9

ODS.CR_CUSTOMER_DAILY_PSI_SUMMARY?????? 6

ODS.FI_REPORT_DATA_H 6

FBI.LOG_AP 3

CTL.ETL_LOG????? 2

ODS.FI_V_HUIKUAN?? 2

(stale) obj# 303378?????? 1

ODS.CR_INVENTORY_ITEM_VARIANCE 1

DW.F_EXPIATION_CRM???? 1

2,? 檢索得到長(zhǎng)時(shí)間執(zhí)行事務(wù)的具體sql語(yǔ)句的hash_value

SELECT DISTINCT sql_hash_value FROM v$session_longops


WHERE target = 'ODS.SM_SALES'

375479500

3850935052

3,? 找出具體執(zhí)行sql語(yǔ)句

SELECT * FROM v$sqltext WHERE hash_value = 375479500


ORDER BY piece

整理得到的sql語(yǔ)句結(jié)果,

SELECT TO_CHAR(S.ENTRY_DATE, 'yyyymmdd'),


???????? IO.STORE_ID,


???????? IPI.PRODUCT_ID,


???????? SUM(S.QUANTITY),


???????? SUM(S.TOTAL_AMOUNT),


???????? SUBSTR(IPI.PRODUCT_ID, 1, 10),


???????? SUM(SUM(S.QUANTITY)) OVER(PARTITION BY TO_CHAR(S.ENTRY_DATE, 'yyyymm'), IO.STORE_ID, IPI.PRODUCT_ID ORDER BY TO_CHAR(S.ENTRY_DATE, 'yyyymmdd')),


???????? SUM(SUM(S.TOTAL_AMOUNT)) OVER(PARTITION BY TO_CHAR(S.ENTRY_DATE, 'yyyymm'), IO.STORE_ID, IPI.PRODUCT_ID ORDER BY TO_CHAR(S.ENTRY_DATE, 'yyyymmdd'))


??? FROM ODS.I_PRODUCT_INFO?????????? IPI,


???????? ODS.I_ORG_STORE_RELATIONSHIP IO,


???????? ODS.SM_SALES???????????????? S


?? WHERE S.PRODUCT_ID = IPI.PRODUCT_ID


???? AND S.MARKET_PLACE_ID = IO.STORE_ID


???? AND TO_CHAR(S.ENTRY_DATE, 'yyyymmdd') BETWEEN '20081108' AND '20081110'


?? GROUP BY S.ENTRY_DATE, IPI.PRODUCT_ID, IO.STORE_ID

4,并在pl/sql develop開(kāi)發(fā)工具中獲得執(zhí)行語(yǔ)句的查詢執(zhí)行計(jì)劃如下。

SELECT STATEMENT, GOAL = CHOOSE?????????????????????????????

?WINDOW SORT????????????????????????????

? SORT GROUP BY????????????????????????????????

?? NESTED LOOPS OUTER?????????????????????????????????

??? NESTED LOOPS??????????????????????????????

???? TABLE ACCESS FULL?????? ODS?????? SM_SALES?????????????????

???? INDEX UNIQUE SCAN????? ODS?????? I_ORG_STORE_RELATIONSHIP_PK??????????????

??? INDEX UNIQUE SCAN ODS?????? I_PRODUCT_INFO_PK????????????????????

5,? 分析查詢相關(guān)的幾個(gè)源數(shù)據(jù)表

表名稱

Row number

關(guān)聯(lián)字段索引

ODS.I_PRODUCT_INFO??????? IPI

23779

Yes

ODS.I_ORG_STORE_RELATIONSHIP IO

9632


Yes

ODS.SM_SALES???????????????? S

6147142


Yes

??? 從對(duì)源表的分析數(shù)據(jù)我們可以看到,目前執(zhí)行方式的問(wèn)題有兩個(gè),首先是使用大表(擁有600萬(wàn)條以上記錄的ods.sm_sales)做了嵌套循環(huán)的驅(qū)動(dòng)表;其次,就是這個(gè)大表上的索引并沒(méi)有得到合理的利用。從而導(dǎo)致本語(yǔ)句的執(zhí)行時(shí)間25秒。

6,優(yōu)化方法

??? 首先我們可以使用oracle的hint,強(qiáng)制在大表ods.sm_sales上使用索引。其次由于在這三個(gè)表關(guān)聯(lián)時(shí),另外兩個(gè)小表ipi和io都是需要跟中間大表s進(jìn)行關(guān)聯(lián),所以使用nested loop將無(wú)法有效使用更多的索引進(jìn)行關(guān)聯(lián),所以建議使用ordered,use_hash結(jié)合swap_join_input使得查詢按照hash join方式,并在兩次hashjoin時(shí)都將小表放在驅(qū)動(dòng)表的位置上。執(zhí)行優(yōu)化后的語(yǔ)句入下。優(yōu)化后執(zhí)行時(shí)間為5秒 。

SELECT /*+ index(s SM_SALES_I5) ordered use_hash(ipi,s,io) swap_join_inputs(io)*/


???????? TO_CHAR(S.ENTRY_DATE, 'yyyymmdd'),


???????? IO.STORE_ID,


???????? IPI.PRODUCT_ID,


???????? SUM(S.QUANTITY),


???????? SUM(S.TOTAL_AMOUNT),


???????? SUBSTR(IPI.PRODUCT_ID, 1, 10),


???????? SUM(SUM(S.QUANTITY)) OVER(PARTITION BY TO_CHAR(S.ENTRY_DATE, 'yyyymm'),IO.STORE_ID, IPI.PRODUCT_ID ORDER BY TO_CHAR(S.ENTRY_DATE, 'yyyymmdd')),


???????? SUM(SUM(S.TOTAL_AMOUNT)) OVER(PARTITION BY TO_CHAR(S.ENTRY_DATE, 'yyyymm'),IO.STORE_ID, IPI.PRODUCT_ID ORDER BY TO_CHAR(S.ENTRY_DATE, 'yyyymmdd'))


??? FROM ODS.I_PRODUCT_INFO?????????? IPI? ,


???????? ODS.SM_SALES???????????????? S,


???????? ODS.I_ORG_STORE_RELATIONSHIP IO??????


?? WHERE S.MARKET_PLACE_ID = IO.STORE_ID


???? AND S.PRODUCT_ID = IPI.PRODUCT_ID


???? AND TO_CHAR(S.ENTRY_DATE, 'yyyymmdd') BETWEEN '20081108' AND '20081110'


?? GROUP BY S.ENTRY_DATE, IPI.PRODUCT_ID, IO.STORE_ID

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉