《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 油田開發數據的優化管理

油田開發數據的優化管理

2008-08-19
作者:牟 菁

  摘 要:介紹了數據庫查詢速度緩慢的常規解決方法及其主要缺點,提出利用Oracle分區功能解決問題,并結合油田開發數據庫現狀,詳細描述了分區的具體實現方法。結合使用情況,總結實施效果,對大數據量表的維護和優化有一定的參考價值。
  關鍵詞: Oracle數據庫 分區Partition 表空間" title="表空間">表空間Tablespace 數據文件" title="數據文件">數據文件Datafile


  伴隨著信息高速公路的飛速建設,油田的各項勘探開發數據都做到了及時準確入庫,數據庫中數據量日益增加。以其下屬的某個采油廠為例,數據量已達到2GB,各種數據庫表更是多達1千多個。與此同時,又產生了一個新問題,那就是雖然各種生產數據都已入庫,但是由于數據量巨大,造成查詢速度非常緩慢。
  本文以油井日度數據表(dba01)為例進行說明。該表是最基礎的開發數據,每天每一口井都有記錄進入到數據庫中。油田規定,該數據15個月內必須保存在線,15個月下來這個表就有997890條記錄。
  這接近100萬條的記錄大大增加系統開銷,在用戶提交查詢后,經常需要等待五六分鐘才能得到結果,有時甚至查不出數據,給用戶的感覺是仿佛處于“死機”狀態。
1 常規解決辦法
  解決大表查詢速度緩慢的問題,最初的對策是在后臺創建很多中間表。
  例如:要得到采油廠生產日數據匯總情況,了解全廠每天的油井開井數、水井開井數、日產油量、注采比等重要數據,其缺點主要有兩個:
  (1)中間表的建立會占用大量表空間,即查詢速度的提高是以犧牲服務器空間為代價,造成了巨大的資源浪費;
  (2)隨著各種應用的不斷開展,中間表的數量也越來越多,這就人為加大了數據管理和維護的工作量。
  因此,要從根本上解決大表存在的查詢速度緩慢的問題,必須找到更為有效的方法。
2 采用分區功能解決問題
  (1) 分區的定義
  分區將表分離在若干不同的表空間上,將大的表和索引拆分成小的易于管理的數據片段,分而治之支撐無限膨脹的大表,給大表物理一級的可管理性。將大表分割成較小的分區可以改善表的維護、備份、恢復、事務及查詢性能。針對我廠大量的油水井日度數據,可以推薦使用Oracle9的分區功能。
  (2)分區的優點
  首先,能夠成倍提高查詢速度:分區管理后,服務器可以進行智能的分區檢測。跳過與查詢無關的分區訪問,并跳過不在線的分區。
  其次,增強系統可用性" title="可用性">可用性:如果表的一個分區由于系統故障而不能使用,其余好的分區仍然可以使用。
  不同分區可以跨表空間存儲, 降低了磁盤損壞帶來的數據不可用性。
3 分區的管理
  (1)建立表的各個分區的表空間
  下面是創建2004年第一季度" title="第一季度">第一季度表空間的操作語句,指定所建立表空間的名字,所用數據文件的名稱、大小和存放目錄,并由存儲字句指定在該空間中所建立對象的缺省存儲參數。
  CREATE TABLESPACE ts_dba01_2004q1
  DATAFILE ′/home2/oracle/test/dba01_2004q1.dat′SIZE 200MB DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0);
  (2)建立分區表
  下面是建立dba01表的操作語句,指定表名、列名及列的數據類型等。這些都與常規創建表的語句相同。
  CREATE TABLE dba01
  (jh varchar2(16) not null,
  rq date not null,
  cyfs varchar2(3),
  dwdm varchar2(11),
  ......
  PARTITION BY RANGE (rq)
  PARTITION dba01_2003q4
  VALUES LESS THAN (TO_DATE(′2004-01-01′,′YYYY-MM-DD′)
  TABLESPACE ts_dba01_2003q4,
  PARTITION dba01_2004q1
  VALUES LESS THAN (TO_DATE(′2004-04-01′,′YYYY-MM-DD′)
  TABLESPACE ts_dba01_2004q1)
  這是創建分區的語句,指定按照日期進行分區,例如:
  日期>=′2004-01-01′并且<′2004-04-01′(即2004年第一季度)的數據放在dba01_2004q1分區內。其他分區也依此原則建立。
  (3)分區表的擴充
  在2004年年底,向表中加入2005年的表空間,同樣是每季度一個表空間,預計每個分區為200MB。下面是創建2005年第一季度表空間的操作語句,指定表空間名稱、數據文件名稱及大小等。
  CREATE TABLESPACE ts_dba01_2005q1
  DATAFILE ′/home2/oracle/test/dba01_2005q1.dat′ SIZE 200MB
  DEFAULT STORAGE (INITIAL 40m NEXT 40m MINEXTENTS 3 PCTINCREASE 0)
  其他季度表空間也如此建立。
  (4)為表添加表空間
  操作語句如下:
  ALTER TABLE dba01
  ADD PARTITION dba01_2005q1
  VALUES LESS THAN (TO_DATE(′2005-04-01′,′YYYY-MM-DD′)
  TABLESPACE ts_dba01_2005q1;
  (5)刪除不必要的分區
  采油廠規定:必須保存15個月的日度數據在線。到2005年,必須把2003年3季度的數據備份,將該分區刪除,騰出空間供后續數據循環使用。刪除分區 ALTER TABLE dba01 DROP PARTION dba01_2003q3;
  利用操作系統工具刪除這個分區所占用的文件
  oracle$ rm /home2/oracle/test/dba01_2003q3.dat
  (6)查看分區信息
  可通過對數據字典USER_EXTENTS進行查詢,操作如下:
  SVRMGRL >SELECT * FROM user_extents
  WHERE SEGMENT_NAME=′dba01′;
  (7)卸載分區
  Oracle9的EXPORT 工具可卸載分區并導出數據,例如到2002年,可將2000年的數據按分區卸載。
  例如:要卸載2003年3季度的數據,操作如下:
  oracle$ exp tycx/***
  tables=dba01:dba01_2003q3 file= dba01_2003q3.dmp
  在語句中要指定用戶名、口令、需要卸出的表名及分區名、卸出文件名稱等。
  (8)導入分區
  Oracle9的IMPORT工具可導入分區并加載數據,例如在2005年,用戶要查看2003年的數據,必須導入該年數據。
  · 建立該表2003年的四個表空間和相應的分區;
  · 下面是導入2003年3季度分區數據的操作語句:
  oracle$ imp tycx/***
  file=dba01_2003q3.dmp tables= (dba01: dba01_2003q3)
4 實施效果
  (1)能夠成倍提高查詢速度
  分區管理后,服務器可以進行智能的分區檢測,跳過與查詢無關的分區訪問,跳過不在線的分區。
  (2)增強系統可用性
  如果表的一個分區由于系統故障而不能使用,其余好的分區仍然可以使用。
  不同分區可以跨表空間存儲, 降低了磁盤損壞帶來的數據不可用性。
  以油井日數據表為例:
  不采用分區技術時,若表空間文件受到破壞,會影響到所有數據都無法使用,必須將該表全部記錄(多達100萬條)重新恢復,工作量很大,恢復期間用戶根本無法查詢數據,完全不能使用。
  而采用分區技術后,由于整個表已按季度拆分為6個分區,因此當某一個表空間文件被破壞,則僅是該分區表空間所對應的季度數據無法使用,其他季度數據仍然可以正常使用,對用戶的查詢以及其他應用影響不大。
  通過合理應用Oracle9的分區功能,可以大大改善系統的性能,降低大表數據管理和維護的工作量,對大表的查詢、增加、修改等操作可以分解到表的不同分區并行執行,可使運行速度更快。對促進無紙化辦公,輔助生產有積極的推動作用。
參考文獻
1 Joseph C.Johson , Matthew Weishan編著. Oracle8i DBA performance Tuning and Network Administrator. 北京:電子工業" title="電子工業">電子工業出版社,2001
2 Carol McCullough-Dieter 編著. Oracle9i數據庫管理員:實現與管理. 北京:清華大學出版社,2003
3 Daniel Benjamin編著.OCP Oracle 9i Datebase New Features For Administrators考試指南.北京:電子工業出版社,2002

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 中文在线三级中文字幕 | 欧美高清性刺激毛片 | 亚欧色视频在线观看免费 | 欧美1区二区三区公司 | 成人黄色一级毛片 | 欧美另类孕交 | 色综合久久88色综合天天小说 | 国产免费一区二区三区在线 | 亚洲视频在线观看网站 | 精品国产亚洲人成在线 | 毛片免费永久不卡视频观看 | 国产精品久久久久久久久久影院 | 自拍视频精品 | 91av综合 | 90岁老太婆一级毛片 | 久久青草国产手机看片福利盒子 | 亚洲成人性视频 | 日韩色视频一区二区三区亚洲 | 三级香蕉 | 久青草视频在线 | 视频精品一区二区 | 国产成人免费高清视频 | 一级v片| 久草国产在线播放 | 色伦网| 国产高清精品毛片基地 | 亚洲一级毛片中文字幕 | 一个人看的www片免费视频中文 | 九九精品在线视频 | 国产精品一 | 综合精品视频 | 成人欧美午夜视频毛片 | 香港经典a毛片免费观看爽爽影院 | 免费看v片网站 | 亚洲系列在线 | 日韩欧美一级a毛片欧美一级 | 免费成人毛片 | 女人张开腿让男人 | 国产成人福利免费观看 | 精品久久久久久久久中文字幕 | 亚洲一级特黄特黄的大片 |