OLTP和OLAP淺析

數據庫設計的一個根基就是要弄清楚數據庫的類型。
 
當今的數據處理大致可以分成兩大類:聯機事務處理OLTPon-line transaction processing在線事務處理,聯機事務處理)、聯機分析處理OLAPOn-Line Analytical Processing在線分析處理,聯機分析處理)。
OLTP是傳統的關係型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。
OLAP是數據倉庫系統的主要應用,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。
 
這兩類系統在數據庫的設計上是如此不同,甚至有些地方的設計是貌似相悖的。比如OLTP系統強調數據庫的內在效率,強調內存各種指標的命中率,強調綁定變量,強調併發操作;而OLAP系統則強調數據分析,強調SQL執行時長,強調磁盤I/O,強調分區等。因爲這些區別,在數據庫設計的階段,弄清楚數據庫類型是至關重要的,只在在這個前提之下,才能夠討論數據庫的具體設計,否則設計必須是盲目的,"皮之不存毛將焉附".
 
OLTP:用戶併發數都很多,但他們只對數據庫做很小的操作,數據庫側重於對用戶操作的快速響應,這是對數據庫最重要的性能要求。
對於一個OLTP來講,數據庫內存的設計顯得很重要,如果數據庫可以在內存中處理,那麼數據庫的性能無疑會提高很多。內存的設計通常是通過調整Oracle和內存相關的初始化參數來實現的,比較重要的幾個是內存相關的參數,包括SGA的大小(Data Buffer,Shared Pool)PGA大小(排序區,Hash區等),這些參一個OLTP系統裏顯得至關重要,OLTP系統是一個數據塊變化非常頻繁、SQL語句提交非常頻繁的系統。對於數據塊來說,應儘可能讓數據塊保存在內存當中,對於SQL來說,儘可能使用變量綁定技術來達到SQL的重用,減少物理I/O和重複的SQL解析,能極大地改善數據庫性能。
常見的OLTP系統有:門票在線銷售系統,銀行交易等。
 
OLAP:相對於OLTP用戶併發數較少,內存可以優化的餘地較小,甚至覺得增加CPU處理速度和磁盤I/O速度是最直接的提高數據庫性能的方式方式,但這將意味着成本的增加。實際上,用戶對OLAP系統性能的期望遠遠沒有對OLTP性能的期望那麼高。在OLAP系統中,SQL的優化顯得非常重要,分區技術在OLAP數據庫中很重要。
OLAP數據倉庫系統的主要應用,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。
 
下表列出OLTPOLAP之間的比較
 
OLTP
OLAP
用戶
操作人員,低層管理人員
決策人員,高級管理人員
功能
日常操作處理
分析決策
DB設計
面向應用
面向主題
數據
當前的,最新的細節的,二維的分立的
歷吏的,聚集的,多維的,集成的,統一的
存取
/寫數十條記錄
讀上百萬條記錄
工作單位
簡單的事務
複雜的查詢
DB大小
100MB-GB
100GB-TB
 
 Oracle 10g以前的版本建庫過程中可供選擇的模板有:
  1. Data Warehouse (數據倉庫)
  2. General Purpose  (通用目的、一般用途)
  3. New Database
  4. Transaction Processing  (事務處理)
Oracle 11g的版本建庫過程中可供選擇的模板有:
  1. 一般用途或事務處理
  2. 定製數據庫
  3. 數據倉庫
個人對這些模板的理解爲:
聯機分析處理(OLAP,On-line Analytical Processing),數據量大,DML少。使用數據倉庫模板
聯機事務處理(OLTP,On-line Transaction Processing),數據量少,DML頻繁。使用一般用途或事務處理模板

聯機事務處理(OLTP,On-line Transaction Processing),DML操作頻繁,並行事務處理多,但是一般都很短。
決策支持系統(DDS,Decision support system),典型的操作是全表掃描,長查詢,長事務,但是一般事務的個數很少,往往是一個事務獨佔系統。

本文出自 “FROG_HONG” 博客,請務必保留此出處http://76287.blog.51cto.com/66287/885475

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章