天天看點

OLTP與OLAP的詳解概述OLTP(on-line transaction processing)資料庫OLAP(On-Line Analytical Processing)資料庫聯機事務處理(OLTP)和聯機分析處理(OLAP)的不同

概述

Oracle-OLAP和OLTP解讀

Oracle-index索引解讀

Oracle-分區表解讀

Oracle-鎖解讀

Oracle-等待事件解讀

Oracle-procedure/cursor解讀

通常來說,我們把業務分為來兩類,線上事務處理系統(OLTP)和線上分析系統(OLAP)或者DSS(決策支援系統),這兩類系統在資料庫的設計上是如此的不同,甚至有些地方的設計是像相悖的。

比如:

OLTP 系統強調資料庫的記憶體效率,強調記憶體各種名額的命中率,強調綁定變量,強調并發操作

OLAP 系統則強調資料分析,強調SQL 執行時長,強調磁盤I/O,強調分區等。

OLTP(on-line transaction processing)資料庫

通常來講,OLTP(線上事務處理系統)的使用者并發數都很多,但他們隻對資料庫做很小的操作,資料庫側重于對使用者操作的快速響應,這是對資料庫最重要的性能要求。

對于一個OLTP 系統來說,資料庫記憶體設計顯得很重要,如果資料都可以在記憶體中處理,那麼資料庫的性能無疑會提高很多。

記憶體的設計通常是通過調整Oracle 和記憶體相關的初始化參數來實作的,比較重要的幾個是記憶體相關的參數,包括SGA 的大小(Data Buffer,Shared Pool),PGA 大小(排序區,Hash 區等)等,這些參數在一個OLTP 系統裡顯得至關重要,OLTP 系統是一個資料塊變化非常頻繁,SQL 語句送出非常頻繁的一個系統。

對于資料塊來說,應盡可能讓資料塊儲存在記憶體當中,對于SQL 來說,盡可能使用變量綁定技術來達到SQL 的重用,減少實體I/O 和重複的SQL 解析,能極大的改善資料庫的性能。

除了記憶體,沒有綁定變量的SQL 會對OLTP 資料庫造成極大的性能影響之外,還有一些因素也會導緻資料庫的性能下降,比如熱塊(hot block)的問題,當一個塊被多個使用者同時讀取的時候,Oracle 為了維護資料的一緻性,需要使用Latch 來串行化使用者的操作,當一個使用者獲得了這個Latch,其他的使用者就隻能被迫的等待,擷取這個資料塊的使用者越多,等待就越明顯,就造成了這種熱塊問題。這種熱塊可能是資料塊,也可能是復原段塊。

對于資料塊來講,通常是資料塊上的資料分布不均勻導緻,如果是索引的資料塊,可以考慮建立反向索引來達到重新分布資料的目的,對于復原段資料塊,可以适當多增加幾個復原段來避免這種争用。

OLAP(On-Line Analytical Processing)資料庫

OLAP 資料庫在記憶體上可優化的餘地很小,甚至覺得增加CPU 處理速度和磁盤I/O 速度是最直接的提高資料庫性能的方式,但這将意味着着系統成本的增加。實際上,使用者對OLAP 系統性能的期望遠遠沒有對OLTP 性能的期望那麼高。

對于OLAP 系統,SQL 的優化顯得非常重要

試想,如果一張表中隻有幾千資料,無論執行全表掃描或是使用索引,對我們來說差異都很小,幾乎感覺不出來,但是當資料量提升到幾億或者幾十億或者更多的時候,全表掃描,索引可能導緻極大的性能差異,是以SQL得優化顯得重要起來。

分區技術在OLAP 資料庫中很重要

這種重要主要是展現在資料管理上,比如資料加載,可以通過分區交換的方式實作,備份可以通過備份分區表空間,删除資料可以通過分區進行删除。

聯機事務處理(OLTP)和聯機分析處理(OLAP)的不同

聯機事務處理(OLTP)和聯機分析處理(OLAP)的不同,主要通過以下五點區分開來。

1.使用者和系統的面向性:

OLTP是面向顧客的,用于事務和查詢處理

OLAP是面向市場的,用于資料分析

2.資料内容:

OLTP系統管理目前資料.

OLAP系統管理大量曆史資料,提供彙總和聚集機制.

3.資料庫設計:

OLTP采用實體-聯系ER模型和面向應用的資料庫設計.

OLAP采用星型或雪花模型和面向主題的資料庫設計.

4.視圖:

OLTP主要關注一個企業或部門内部的目前資料,不涉及曆史資料或不同組織的資料

OLAP則相反.

5.通路模式:

OLTP系統的通路主要由短的原子事務組成.這種系統需要并行和恢複機制.

OLAP系統的通路大部分是隻讀操作

OLTP是傳統的關系型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。

OLAP是資料倉庫系統的主要應用,支援複雜的分析操作,側重決策支援,并且提供直覺易懂的查詢結果。

OLTP與OLAP的詳解概述OLTP(on-line transaction processing)資料庫OLAP(On-Line Analytical Processing)資料庫聯機事務處理(OLTP)和聯機分析處理(OLAP)的不同