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―),男,河南西平人,講師.

〔責任編輯 牛建兵〕

主站蜘蛛池模板: 中文字幕在线观| 就去吻亚洲精品国产欧美| 尤物在线观看乱码| 国产精品视频公开费视频| 久久视精品| 精品一区二区三区四区五区| 国产精品伦视频观看免费| 996免费视频国产在线播放| 国产国产人成免费视频77777| 片在线无码观看| 无码丝袜人妻| 国产精品极品美女自在线网站| 久久一本日韩精品中文字幕屁孩| 国产精品视频a| 97综合久久| 亚洲精品视频免费| 伦精品一区二区三区视频| 日韩精品成人在线| 91成人在线免费视频| 在线观看国产黄色| 激情無極限的亚洲一区免费| 久久夜色撩人精品国产| 欧美福利在线播放| Aⅴ无码专区在线观看| 亚洲日本韩在线观看| 天天色综合4| 亚洲h视频在线| 日韩视频免费| 蜜桃臀无码内射一区二区三区| 97在线碰| 丁香六月激情综合| 亚洲成人一区二区三区| 伊人久热这里只有精品视频99| 无码免费的亚洲视频| 免费视频在线2021入口| 亚洲一区黄色| 91色爱欧美精品www| 老司机午夜精品网站在线观看| 亚洲成AV人手机在线观看网站| 成人无码一区二区三区视频在线观看| 久久人妻系列无码一区| 九色综合视频网| 欧美一区二区三区国产精品| 亚洲天堂2014| 青青操国产视频| 国产一级二级在线观看| 亚洲第一区欧美国产综合| 亚洲欧美日韩视频一区| 无码综合天天久久综合网| 欧美成人午夜影院| 久久无码免费束人妻| 无码在线激情片| 久久国产热| 亚洲中文字幕手机在线第一页| 永久免费精品视频| 欧美专区在线观看| 国产一级毛片网站| 国产精品大尺度尺度视频| 国产极品美女在线播放| 五月天在线网站| 韩国福利一区| 成人免费视频一区| 丁香亚洲综合五月天婷婷| 国产福利微拍精品一区二区| 亚洲va在线∨a天堂va欧美va| 88av在线| 97在线国产视频| 精品国产电影久久九九| 99re热精品视频国产免费| 日韩欧美网址| 激情综合五月网| 免费无码又爽又刺激高| 丁香综合在线| 国产在线日本| 亚洲欧美自拍视频| 免费毛片视频| 欧美一级在线看| 毛片久久网站小视频| 波多野结衣在线se| 自拍偷拍欧美| 一级片免费网站| 欧美亚洲另类在线观看|