Oracle 12.2新特性掌上手冊 - 第二卷 In-Memory增強

編輯手記 In-Memory 是 Oracle 在 12.1.0.2 中引入的新特性,旨在加速分析型 SQL 的速度。傳統的 OLTP 應用通過 buffer cache 修改數據,分析性的 SQL 從 IM 列式存儲中掃描數據,避免物理讀成爲性能瓶頸。那麼在12.2最新版本中,In-Memory有哪些增強特性呢?我們一起來學習。

注:文章內容來自官方文檔翻譯。若需要了解更多,請查閱官方文檔文中配圖來自Oracle文檔。


1、In-Memory Expressions(列式存儲表達式)

內存中列存儲允許以壓縮的列格式將對象(表,分區和子分區)填充到內存中。 內存表達式使經常評估的查詢表達式能夠在內存中列存儲中實現,以供後續重用。


將經常使用的查詢表達式的實現值填充到內存中列存儲中大大減少了執行查詢所需的系統資源,並提供更高的可擴展性。



2、In-Memory Virtual Columns(虛擬列)

內存虛擬列使表的某些或所有用戶定義的虛擬列能夠將其值實現(預先計算)並填充到內存中列存儲以及該表的所有非虛擬列。


將用戶定義的虛擬列的值實現到內存中列存儲可以通過使用內存中技術(例如SIMD(單指令,多數據)向量處理)來掃描和過濾虛擬列值,從而大大提高查詢性能, 就像一個非虛擬列。


3、In-Memory FastStart(列式存儲快速啓動)

內存列存儲允許以壓縮的柱形格式在內存中填充對象(例如表、分區和子分區)。 到目前爲止,柱形格式只能在內存中使用。 這意味着在數據庫重新啓動後,必須使用多步驟過程從頭開始填充內存中列存儲,該過程將傳統的行格式化數據轉換爲壓縮的列格式並放入內存中。

內存中快速啓動使數據以比以前更快的速度重新填充到內存中列存儲中,方法是以壓縮的柱形格式保存磁盤上內存列存儲中當前填充的數據副本。


內存中的FastStart主要減少了系統重新啓動後將數據重新填充到內存中列存儲所需的時間。 這允許企業開始利用分析查詢的性能優勢,比以前更快地以柱形格式訪問數據。


4、Automatic Data Optimization Support for In-Memory Column Store(列式存儲自動數據優化支持)

自動數據優化(ADO)可實現信息生命週期管理(ILM)任務的自動化。 ADO的自動功能取決於熱圖功能,它在行級(聚合到塊級統計)和段級跟蹤訪問。 最初,ADO支持使用在段或表空間級別定義的策略進行壓縮分層和存儲分層。 ADO支持現在已經擴展到包括內存中列存儲。 ADO通過基於熱圖統計將對象(表,分區或子分區)移入和移出內存來管理內存中列存儲。對內存中列存儲的ADO支持可確保基於熱圖統計信息最優化使用內存中列存儲。


由於內存中列存儲是從系統全局區域(SGA)分配的,它使用主內存,主內存資源有限並且昂貴。 ADO確保只使用用戶定義的策略在內存中列存儲中填充最佳候選對象,提供了最佳性能,而不需要DBA經常干預手動管理內存中列存儲的內容。


5、Join Groups(組連接)

填充到內存中列存儲中的數據使用許多不同的編碼技術進行壓縮。 如果在連接中一起使用的兩個列使用不同的技術編碼,則必須解壓縮這兩個列以執行連接。 連接組允許用戶指定哪些列用於跨表的連接,因此這些列始終可以使用相同的編碼技術進行壓縮。


在使用相同技術編碼的連接中一起使用的列使得能夠進行連接,而不必通過提高連接的效率來解壓縮列。


6、Expression Tracking(表達式跟蹤)

SQL語句通常包括諸如“+”或“ - ”的表達式。 更復雜的示例包括PL / SQL函數或SQL函數,如LTRIM和TO_NUMBER。 存儲庫維護在編譯期間識別並在執行期間捕獲的相關表達式的使用信息。 涉及多個列或函數的複雜表達式造成難以精確地估計優化器中的選擇性,從而導致次優計劃。 通過表達式跟蹤,處理有關表達式及其用法的更多信息對於建立更好的查詢執行計劃很有用。


7、Oracle Database In-Memory Support on Oracle Active Data Guard(Oracle ADG上的列式存儲支持)

Oracle Active Data Guard允許以只讀模式打開standby數據庫。 此功能使企業能夠將生產報告工作負載從primary數據庫卸載到同步standby數據庫。 因此,現在可以在Oracle Active Data Guard standby數據庫上使用內存中列存儲。 這使得standby 數據庫上處理的報告工作負載能夠利用在存儲器中以壓縮柱狀格式訪問數據。 這也使掃描、聯接和聚合的執行速度比傳統磁盤格式的快。


還可以在primary數據庫和standby數據庫上的內存中列存儲中填充完全不同的數據集,從而有效地將應用程序可用的內存中列存儲的大小增加一倍。


通過啓用在Oracle Active Data Guard standby數據庫上運行的報告工作負載來使用內存中列存儲,可以極大地提高工作負載的執行性能。 這是因爲處理可以充分利用在存儲器中以壓縮柱形格式訪問數據。


8、In-Memory Column Store Dynamic Resizing(列式存儲自動調整列大小)

假設SGA中有足夠的內存可用,就可以在數據庫打開時動態增加內存區域的大小,可以調整內存中列存儲的大小,而無需重新啓動數據庫。

發佈了6 篇原創文章 · 獲贊 12 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章