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

〔責任編輯 牛建兵〕

主站蜘蛛池模板: 国产啪在线91| 欧美高清视频一区二区三区| 福利国产微拍广场一区视频在线| AV老司机AV天堂| 久久综合AV免费观看| 亚洲日韩日本中文在线| 一本一道波多野结衣一区二区 | 免费在线一区| 久996视频精品免费观看| 亚洲精品第一页不卡| 亚洲精品麻豆| 2022国产无码在线| 国产精品亚洲综合久久小说| 日韩精品中文字幕一区三区| 欧美三级日韩三级| 国产精品成人AⅤ在线一二三四| 国产精品亚洲综合久久小说| 日韩经典精品无码一区二区| 久久久波多野结衣av一区二区| 波多野结衣在线一区二区| 亚洲成人77777| 日韩国产高清无码| 亚洲成人动漫在线观看| 成人一级免费视频| 91麻豆精品国产高清在线| 国产一区二区三区免费| 成人在线观看不卡| 国产一区二区三区免费| 欧美第二区| 国产在线97| 亚洲第一成年人网站| 免费一级毛片在线播放傲雪网 | 亚洲女人在线| 欧美a在线看| 本亚洲精品网站| 不卡无码网| 手机精品视频在线观看免费| 亚洲国产日韩一区| 国产成人综合亚洲网址| 亚洲视频三级| 欧美日韩中文国产va另类| 国产精品流白浆在线观看| 亚洲精品第五页| 久久久久国产精品嫩草影院| 成人综合在线观看| 美女视频黄频a免费高清不卡| 国产主播一区二区三区| 欧美黄色网站在线看| 91福利片| 三区在线视频| 亚洲天堂在线视频| 福利视频一区| 亚洲乱强伦| 无码福利视频| 精品国产黑色丝袜高跟鞋| 无码中文字幕精品推荐| 欧美色综合久久| 欧美日韩专区| 成人国内精品久久久久影院| 在线无码九区| 国产另类视频| 97在线免费| 精品丝袜美腿国产一区| 久久国产香蕉| 黄色在线网| 国产精品亚洲一区二区三区z | 热久久综合这里只有精品电影| 国产午夜人做人免费视频中文| 亚洲三级视频在线观看| a毛片基地免费大全| 国产免费怡红院视频| 美女扒开下面流白浆在线试听| 欧美国产在线一区| 欧美日韩午夜视频在线观看| 亚洲乱亚洲乱妇24p| 99伊人精品| 日本午夜精品一本在线观看 | www.亚洲天堂| 亚洲综合激情另类专区| 天天综合网色| 中文字幕久久亚洲一区| 欧美色图久久|