解放軍總醫院 計算機室,北京 100853
Oracle 11g數據庫的OLTP表壓縮評測
史洪飛,劉志敏
解放軍總醫院 計算機室,北京 100853
目的使用量化指標,對比壓縮表和非壓縮表的查詢及更新操作性能進行評測,為大型聯機事務處理的數據庫應用做技術準備。方法進行實驗設計,創建量化平臺,分別在壓縮與非壓縮的數據表上執行特定的數據操縱語句及查詢語句,生成結構化查詢語言(SQL)數據庫執行計劃,記錄運行時間及結果并進行對比。結果壓縮表的空間占用較未壓縮表降低1倍多,全表掃描操作的性能提升1倍,而壓縮表與未壓縮表的數據更新操作和查詢操作性能無明顯差異。結論聯機事務處理的大型應用,可以利用Oracle11g數據庫的新特性,采用OLTP表壓縮技術,既不影響操作響應時間還可以明顯降低磁盤占用空間,從而獲得改善數據庫性能的好處。
Oracle數據庫;SQL;表壓縮技術;HIS
通常在數據庫系統中,事務是工作的離散單位。聯機事務處理系統(OLTP)實時地采集處理與事務相連的數據以及共享數據庫和其他文件的位置變化信息。在聯機事務處理中,事務是被立即執行的。這與批處理相反,一批事務被存儲一段時間,然后再被執行,大多數批處理是在夜間進行的。聯機事務處理的結果可以在數據庫中立即獲得,并以實時的方式發生。醫院信息系統(HIS)中的大量應用都是OLTP的典型應用,其重要特征就是并發的用戶多,要求響應速度快。隨著計算機與通信技術的快速發展,HIS的應用也越來越廣泛,用戶數劇增,數據量暴漲,隨之而來的性能問題愈發突出。
Oracle 11g數據庫[1-2]引入了一個新的特性——OLTP表壓縮,所謂OLTP表壓縮就是允許在任何類型的數據操作過程中對數據進行壓縮,例如通常的數據操縱語言(DML)的插入、更新、刪除等。除此之外,表壓縮減少了寫操作的相關壓縮開銷,使之適用于OLTP業務模型的應用環境。
1.1 OLTP表壓縮
Oracle數據庫的OLTP表壓縮專門設計了一個“唯一”(Unique)壓縮算法來處理OLTP應用程序。該算法通過消除同一個數據庫塊內重復的值(這些值可以是跨越不同列的)來達到壓縮的目的。壓縮過后的塊包含一個稱為符號表的結構來保持壓縮的原數據。當數據庫塊被壓縮的時候,首先在符號表中為重復值添加一個副本,然后將這個重復值刪除,這樣每一個重復的值都可以被一個指向符號表中對應條目的一個更短的引用所替代。
該算法的革新性在于,壓縮后的數據在數據庫塊內是獨立的,那些用于將壓縮后的數據恢復到其原始狀態的原數據也存儲在對應數據庫塊中。與那些在全局數據庫上維護一個符號表的壓縮算法比較,這個獨特的設計因為在訪問壓縮數據的時候不用引進額外的I/O開銷而顯著提升了性能。
1.2 OLTP表壓縮的益處
在給定環境下獲得的壓縮比率取決于給定的數據的自身性質,特別是數據自身的基數,如某數據的基數只有0~9這10個數字,顯然在同樣情況下相對于基數為0~100的數據,其占用空間少,壓縮效果好。
OLTP表壓縮,不僅僅在于節省磁盤存儲空間,一個顯著的優勢是,在不事先對數據塊進行解壓縮就可以直接讀取壓縮數據塊的內容。因此,也就不會因為訪問壓縮數據而使性能大幅降低。相反的,由于要訪問的數據塊數目少了,從而降低了I/O開銷,也會提高性能。
1.3 最小化性能開銷
OLTP表壓縮對讀取數據沒有產生任何影響,而在寫數據(即壓縮數據)的時候必須做額外的工作,所以寫操作的性能開銷是不可避免的,因此,Oracle數據庫采用批處理模式壓縮塊而不是每有一個寫操作就進行數據的壓縮。剛被初始化的數據塊在達到數據塊內部控制的閾值(80%)之前并不壓縮。當一個事務導致數據塊內部達到設定的閾值之后,數據塊內部所有的內容都被壓縮,這時數據塊內數據量會低于閾值,如果之后的某個事務再次導致數據塊內部達到設定的閾值之后就再次對整個數據塊進行壓縮。重復執行這個過程,直到Oracle數據庫認為進一步壓縮不會獲得合適的收益為止。在整個過程中,只有觸發塊壓縮的事務就會有輕微的壓縮開銷,因此,大多數的OLTP事務的性能在壓縮與未壓縮的數據塊上基本相同。
在我院的HIS應用中,每天都會不斷產生的大量數據,這些數據占用了大量的磁盤存儲空間,這也是物理I/O繁忙影響性能的重要因素,如果能夠利用Oracle11g數據庫提供的面向OLTP應用的表壓縮技術,勢必會在改善數據庫應用的性能方面帶來好處。本次試驗的主要目的是應用實際數據來評測Oracle 11g數據庫表壓縮技術在壓縮完成之后對數據庫性能有多大影響,數據的壓縮比是多少。通過對未壓縮的表和壓縮過的表分別進行查詢和更新操作,對比壓縮表與未壓縮表的執行計劃,記錄兩種表對這些操作的所需時間,量化兩者聯機事務處理操作對數據庫性能的影響。另一方面,在試驗過程批量導入數據的同時,對比數據批量導入到未壓縮表及壓縮表的所需時間,量化兩者批量操作對數據庫性能[3-5]的影響。
3.1 評測試驗設計
(1)在同一臺數據庫服務器上進行試驗。為了準確地反映出壓縮表與未壓縮表之間在查詢及更新方面的性能差異,需要在相同的環境下執行操作并記錄時間,為了保證試驗的準確性,我們用同一臺服務器進行試驗。
(2)在相同的數據庫內存環境下進行試驗。為了保證試驗的公平性,在每次查詢及更新操作之前,需要清除數據庫高速緩存及共享池里的數據。
(3)記錄操作時間。為保證壓縮表和未壓縮表操作比較的準確性,在每次執行查詢和更新操作前后,都記錄系統時間。
(4)模擬真實數據。為了更能反映評測的真實性,本次試驗的表結構及數據采用在用HIS的病人生命體征數據采集表。
3.2 評測試驗環境[6-7]
本次試驗用的服務器是一臺4核的PC機,具體配置為:主機Dell Vostro 260,CPU為Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz,內存4G,操作系統為Microsoft Windows 7旗艦版 Service Pack 1,數據庫版本為Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit。
對比試驗過程如下:① 創建試驗表結構,包括非壓縮表和壓縮表;② 批量數據導入操作,首先向未壓縮表中導入700萬行數據,記錄導入所需的時間及占用的數據塊個數,然后向壓縮表中同樣導入這700萬行數據,記錄導入所需的時間及占用的數據塊個數,對比兩種方式的性能差異;③ 在沒有索引的環境中,執行更新操作,對比兩種方式的性能差異;④ 創建索引;⑤ 在有索引的環境中,執行更新操作,對比兩種方式的性能[6-7]差異;⑥ 查詢操作,對壓縮表和未壓縮表分別進行全表掃描和普通查詢,對比兩種方式的性能差異。
通過本次試驗記錄,得到壓縮表與未壓縮表的各項試驗操作的執行時間,綜合對比數據匯總,見表1。

表1 壓縮表與未壓縮表的各項試驗操作及執行時間綜合對比數據匯總
從表1數據的對比可以看出,在相同的試驗環境下,對于批量插入操作,壓縮表比未壓縮表慢92.59 s,性能降低了76.62%;對于全表掃描操作,壓縮表比未壓縮表快1.17 s,性能提升了1倍;對于空間占用數據量,壓縮表比未壓縮表少占用23789個數據塊,空間占用率下降111%;對于數據更新操作和數據查詢操作,不論加還是不加索引,壓縮表與未壓縮表在時間上相差不大,由此可見,兩種表對于數據更新操作和數據查詢操作無明顯差異。
OLTP表壓縮功能是Oracle 11g數據庫的新特性,當執行批量插入數據的同時,對表數據進行壓縮,試驗結果表明,表壓縮對批量插入操作的性能影響比較大,導致性能明顯下降,而對于數據的查詢與更新操作,數據壓縮與不壓縮,基本無明顯差異,而對于全表掃描的查詢操作,由于壓縮表占用的數據塊減少1倍,由此使得查詢性能可以提升1倍。
通過試驗證明,HIS中大型聯機事務處理的應用數據,可以考慮利用Oracle 11g數據庫的新特性,采用OLTP表壓縮技術,在不影響運行性能的前提下,盡可能減少數據的磁盤占用空間,從而獲得數據庫性能進一步改善的好處。
[1] 劉志敏.Oracle數據庫應用管理解決方案[M].北京:電子工業出版社,2002.
[2] Thomas Kyte.Oracle Database 9i/10g/11g編程藝術:深入數據庫體系結構[M].2版.北京:人民郵電出版社,2011.
[3] 馬錫坤.基于 Oracle的在線式應用容災系統的建立[J].中國醫療設備,2012,27(2):38-40.
[4] 巢子杰. Oracle數據庫優化探究[J].軟件導刊,2010,(2):142-144.
[5] 魏亞楠,宋義秋.Oracle數據庫應用系統的性能優化[J].2010, (8):204-206.
[6] Oracle? Database SQL Language Reference 11g Release 2 (11.2) E10592-02[EB/OL](2001-11-01)[2009-08-02].http://docs.oracle.com/cd/E14072_01/server.112/e10592.pdf.
[7] Oracle? Database Concepts 11g Release 2 (11.2) E10713-02[EB/ OL](1993-05-07)[2009-08-15].http://docs.oracle.com/cd/ E14072_01/server.112/e10713.pdf.
Evaluation of OLTP Table Compression of Oracle 11g Database
SHI Hong-fei, LIU Zhi-min
Computer Room, General Hospital of PLA, Beijing 100853, China
ObjectiveUsing quantitative indicators to contrast query of compressed table and noncompressed table, and update their operation performance to make technical preparations for database application of the large scale online transaction processing (OLTP).MethodsMaking experimental design and building appropriate platform. Performing specifc data manipulation and query statements on the compressed table and non-compressed tables respectively, and generating execution plan of structured query language (SQL) database. Then recording and comparing the running time and results.ResultsSpace occupied by the compressed table is less than half of space occupied by non-compressed table while full table scan operation performance is doubled. However, there is no signifcant difference between performance of data update and query operations of compressed and non-compressed tables.ConclusionLarge scale OLTP applications can take advantage of the new features of Oracle11g for table compression technology, which neither affects the operation response time nor signifcantly reduces the disk space so as to obtain the benefts of improving performance.
Oracle database; structured query language; table compression technology; hospital information system
TP311.13
A
10.3969/j.issn.1674-1633.2013.05.011
1674-1633(2013)05-0035-03
2013-02-25
國家高技術研究發展計劃(863計劃)(2012AA02A601)。
本文作者:史洪飛,解放軍總醫院計算機室主任。
劉志敏,高級工程師。
通訊作者郵箱:liuzhimin0724@163.com