999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Oracle臨時表空間不足和批處理緩慢問題探討

2012-01-12 09:03:14譚紅斌
天中學刊 2012年2期

譚紅斌

(駐馬店職業技術學院,河南 駐馬店 463000)

Oracle臨時表空間不足和批處理緩慢問題探討

譚紅斌

(駐馬店職業技術學院,河南 駐馬店 463000)

數據庫系統出現問題時,會導致整個系統不穩定.文章分析了Orcale臨時表空間不足和批量處理時運行速度緩慢的原因,并給出了解決辦法.

SQL;hash join;臨時表空間

1 問題的提出

筆者所在學院的學生管理系統后臺使用的是Oracle數據庫.在每天凌晨批處理期間,ALERT日志頻繁報出臨時表空間不足的告警信息,導致批量程序運行失敗.在對臨時表空間進行多次擴容后(從40 GB增加到 60 GB,再增加到 100 GB),問題仍然無法有效地解決.即使在批量執行成功的時候,也需要執行很長時間才能完成.為了解決此問題,急需對該問題進行全面排查,以找到解決辦法.

2 問題的分析和解決

根據以往的經驗,筆者分析認為造成這一問題的原因可能是服務器硬件存在性能問題、操作系統設置有問題或者是應用本身的 SQL語句編寫有問題.為此,筆者衡量服務器的運算能力以及該數據庫的負載,使用測試工具測試,并未發現服務器及Oracle本身的瓶頸問題.因此,把問題定位在應用邏輯方面,并做了如下詳細的測試.

2.1 編寫記錄使用臨時表空間SQL語句的腳本

查看數據庫 AWR報告,發現該報告未能準確體現出占用臨時表空間最高的SQL語句.為此,筆者編寫了一個記錄使用臨時表空間SQL語句的shell腳本,用來記錄使用臨時表空間最高的SQL語句,并將其保存在特定的表中.該腳本的部分SQL語句編寫如下:

2.2 抓取最消耗臨時表空間的SQL語句

在臨時表空間已增加到 100 GB的情況下,重新進行批量運行,出現臨時表空間不足錯誤時,筆者根據編寫的監控腳本,順利抓取到了最消耗臨時表空間的兩個語句.其中,語句1消耗約40 GB臨時表空間,語句2消耗約60 GB臨時表空間.由于語句1和語句2的語法結構完全一致,只是批量處理的數據不一樣,故這兩個語句可用同一語句描述,具體如下:

2.3 分析執行計劃

分析語句發現,執行計劃使用了hash join連接技術,當驅動表無法在內存中裝載時,驅動表一次或多次被置換到臨時表空間,發生one-pass或muti-pass的現象,導致臨時表空間的消耗和執行效率的低下.由于語句1和2結構完全一致,因此對語句1分析和優化即可,根據監控腳本所抓取到的SQL語句及其id,我們得到了如圖1所示的執行計劃信息.由圖1可以看出,該執行計劃的問題在于出現了“merge join cartesian”合并連接笛卡爾乘積,而其乘積結果作哈希連接的驅動表.由于PGA(程序全局區)中的hash area無法完全裝載該表,導致出現 one-pass、muti-pass,大量占用臨時表空間,程序運行效率低下.該合并連接笛卡爾乘積將產生約1 700萬條記錄,而PGA大小為 1 628 M,hash area最多能使用 1628*5% = 80 M,顯然80 M的hash area無法裝載更多記錄的運算結果,繼而大量占用臨時表空間,導致程序運行效率低下.

SQL優化器CBO之所以選擇合并連接笛卡爾乘積,原因在于CBO評估合并連接笛卡爾乘積返回的結果為1行,檢查設置該語句的三個分區表的統計信息,發現統計信息為0行.至此,問題已經清楚.由于批量的流程為數據加載、運算、數據全刪除.因此系統自動統計信息時往往在批量數據全部刪除后進行,導致采集的統計信息的為0行,繼而CBO選擇了合并連接笛卡爾乘積,導致了錯誤的執行計劃、大量的臨時表空間占用和性能低下的執行計劃.

2.4 重寫SQL后進行測試

根據每個系統每日數據并不大的情況,理想的執行計劃應為:子查詢中的D表和E表做hash join,所產生的結果集做為另外一個hash join的probe表去探測A表.將復合記錄的結果返回.由此,子查詢不應該做view merge.我們將語句改寫,限制數據庫CBO優化器做出錯誤的執行計劃選擇.

語句重寫后,在很短時間內即可完成,同時,未出現對臨時表空間的消耗現象.

以下為修改后語句的部分內容,其執行計劃為筆者所預期的理想路徑,執行計劃信息如圖2所示.

圖2 修改后的語句執行計劃信息

2.5 問題的解決

語句在修改前在執行時間超過 1個小時仍未結束,而經過語句重寫后,測試顯示不到1分鐘即可完成,同時也消除了對臨時表空間的過量消耗的問題.

3 結語

根據以上分析,筆者認為要提高SQL語句的編寫效率,簡化SQL的處理邏輯,在應用編寫時應考慮到表的增量以及相應的執行計劃,在關鍵SQL語句中使用顯式執行計劃.系統關鍵SQL語句應考慮:

(1) 使用 hint穩定執行計劃,通過在子查詢中加入no_merge的hint防止CBO優化器做view merge.同時,由于子查詢內部的謂詞中已有分區鍵,且CBO可有效使用分區去除,故通過加入no_index的hint可使對單個分區掃描的索引范圍更加有效.

(2) 基于批量處理的流程,可在調用批量程序運行的shell腳本,數據加載完畢,并對相關的三張表進行統計信息的收集之后,再開始做merge的批量操作.

[1] 滕永昌.Oracle數據庫系統管理[M].北京:清華大學出版社,2003:80―96.

[2] 鄭阿奇.ORACLE實用教程[M].北京:電子工業出版社,2009:120―160.

[3] 文平.ORACLE大型數據庫系統在AIXUNIX上的實戰詳解[M].北京:電子工業出版社,2010:66.

[4] 王彬.Oracle IIg基礎與提高[M].北京:電子工業出版社,2009:230―261.

[5] 肖平.基于Oracle應用服務器的Web開發技術[M].北京:清華大學出版社,2010:90.

TP392

A

1006-5261(2012)02-0036-03

2012-03-29

譚紅斌(1975―),男,河南西平人,講師.

〔責任編輯 牛建兵〕

主站蜘蛛池模板: 嫩草影院在线观看精品视频| 国产综合另类小说色区色噜噜| 国产综合无码一区二区色蜜蜜| 人妻精品久久久无码区色视| 亚洲国产成人精品无码区性色| 久久综合色天堂av| 国产亚洲成AⅤ人片在线观看| 久久精品免费看一| 成人免费一级片| 亚洲视频影院| 在线日本国产成人免费的| 亚洲精品图区| 国产男女免费完整版视频| 97久久人人超碰国产精品| 韩日免费小视频| 色老头综合网| 欧美精品啪啪一区二区三区| 日韩国产一区二区三区无码| 日韩午夜福利在线观看| 九九九精品成人免费视频7| 国产精品自在在线午夜| 国产精品污污在线观看网站| 日韩视频免费| 黄色网址手机国内免费在线观看| 波多野结衣的av一区二区三区| 日本人又色又爽的视频| 成年人视频一区二区| 亚洲日韩高清无码| 国产麻豆精品久久一二三| 国产精品尤物在线| 亚洲第一天堂无码专区| 99精品国产自在现线观看| 国模视频一区二区| 国产第一色| 青青草91视频| 久久婷婷六月| 日韩乱码免费一区二区三区| 午夜啪啪福利| 欧美a级在线| 亚洲男人的天堂网| 69av免费视频| 成人一级免费视频| 国产在线第二页| 农村乱人伦一区二区| 麻豆AV网站免费进入| 久一在线视频| 精品无码人妻一区二区| a级毛片免费网站| 国产性生交xxxxx免费| 制服丝袜国产精品| 日本国产一区在线观看| 久久久久人妻一区精品| 亚洲国产91人成在线| 国产精品女同一区三区五区| 91久久天天躁狠狠躁夜夜| 91久久精品国产| 国产裸舞福利在线视频合集| 久久99国产综合精品1| 伊人成人在线视频| 91精品专区国产盗摄| 国产网友愉拍精品| 996免费视频国产在线播放| 亚洲乱码视频| 久久综合色播五月男人的天堂| 国模视频一区二区| 国产97公开成人免费视频| 中文字幕日韩欧美| 无码免费试看| 亚洲香蕉在线| 国产成人免费| 成人av手机在线观看| 日本久久免费| 亚洲综合国产一区二区三区| 在线国产毛片手机小视频| 国产经典在线观看一区| 不卡网亚洲无码| 久久女人网| 欧美日韩一区二区三| 国产在线第二页| 免费观看男人免费桶女人视频| 91福利片| 青青国产在线|