全部產品
Search
文件中心

PolarDB:PolarDB PostgreSQL(相容Oracle)2.0版本商業化公告

更新時間:Jul 06, 2024

PolarDB PostgreSQL版(相容Oracle)2.0版本正式商業化。

公測結束時間

2023年6月30日

正式版發布時間

2023年7月5日

計費說明

全面支援訂用帳戶和隨用隨付兩種計費模式。計費詳情請參見產品計費

產品優勢

PolarDB PostgreSQL版(相容Oracle)2.0版本對PostgreSQL在分布式負載前提下的高並發、高寫入負載、並行查詢和邏輯複製等方面的效能相比於PolarDB PostgreSQL版(相容Oracle)1.0版本有了進一步提升。PolarDB PostgreSQL版(相容Oracle)2.0版本的主要提升如下:

效能顯著提升

使用pgbench進行唯讀情境(select-only)與讀寫情境(tpcb-like)的效能測試,採用的叢集規格為polar.o.x8.xlarge,測試資料如下:

情境

PolarDB PostgreSQL版(相容Oracle)1.0版本

PolarDB PostgreSQL版(相容Oracle)2.0版本

效能提升

唯讀情境(select-only)

109141.30

120803.95

10.69%

讀寫情境(tpcb-like)

49226.71

64752.41

31.54%

說明

效能測試中的參數均保持一致,其中參數polar_enable_stmt_transaction_rollbackpolar_default_with_rowid設定為off,其餘參數使用預設值。

PolarDB PostgreSQL版(相容Oracle)2.0版本相比於PolarDB PostgreSQL版(相容Oracle)1.0版本在效能方面有了顯著的提升,特別是在tpcb-like的讀寫情境壓力下,效能提升了超過30%。此外,在存在大量串連的情境下,PolarDB PostgreSQL版(相容Oracle)2.0版本大幅提高了事務輸送量,在測試情境下最高可提升1倍。

為了進一步提高效能,PolarDB PostgreSQL版(相容Oracle)2.0版本增加了許多並行查詢功能。例如,PL/pgSQL函數內的RETURN QUERY返回結果時支援QUERY的並行計算,REFRESH MATERIALIZED VIEW命令也可以使用並行查詢。此外,支援並行順序掃描chunk,提高大範圍資料掃描的IO吞吐,使其接近塊裝置的IO吞吐極限。

索引增強

PolarDB PostgreSQL版(相容Oracle)2.0版本在處理B樹索引(標準資料庫索引)中的重複資料方面進行了有效最佳化,從而降低了B樹索引的總體空間使用量,同時提高了總體查詢效能。具體而言,該版本通過引入去重技術的索引壓縮策略,可以自動去重並壓縮B樹索引中的重複資料,從而減少索引佔用的空間。同時,PolarDB PostgreSQL版(相容Oracle)2.0版本還解決了B-樹索引的資源消耗問題,包括頻繁更新索引導致的表膨脹問題。此外,該版本還提供了GiST索引,在構建過程中預先排序資料,從而可以大幅提高GiST和SP-GiST索引的建立速度,並減少索引的大小。

分區表提升

PolarDB PostgreSQL版(相容Oracle)2.0版本通過改進分區系統,使得使用分區表進行查詢時獲得了更好的效能提升。現在,使用者可以使用更靈活的分區裁剪和智能join。此外,該版本還增強了對於觸發器的支援,同時增加了邏輯複製的支援,使得資料複製和同步更加高效可靠。

此外,PolarDB PostgreSQL版(相容Oracle)2.0版本最佳化了分區裁剪能力,減少了子分區subplan和重複的cached plans,從而可以更快地執行查詢操作。同時,在增減分區時使用alter table detach|attach PARTITION concurrently模式,避免了鎖衝突,提高了資料庫的可用性和穩定性。

並行VACUUM(記憶體回收)

VACUUM機制在PolarDB PostgreSQL版(相容Oracle)2.0版本的資料庫管理中非常重要,能夠釋放掉已經不再使用的資料表空間,以緩解常見的表膨脹問題。為了進一步最佳化記憶體回收的效率和效能,PolarDB PostgreSQL版(相容Oracle)2.0版本引入了並行的索引回收機制。此外,使用者還可以自行指定並行工作者的數量,以便更好地滿足需求。

通過這些最佳化措施,PolarDB PostgreSQL版(相容Oracle)2.0版本的資料庫管理具備更高的效率、可靠性和穩定性,使得使用者可以更加輕鬆地進行資料管理和維護工作。

查詢最佳化

PolarDB PostgreSQL版(相容Oracle)2.0版本引入了增量排序,其中查詢中較早步驟的排序資料可以加速後續步驟的排序。這一最佳化措施可以顯著提高查詢的效能和效率。

PolarDB PostgreSQL版(相容Oracle)2.0版本還增加了更多類型的彙總和分組集查詢,能夠利用PostgreSQL高效的雜湊彙總功能。這意味著具有大型彙總的查詢不必完全裝入記憶體,從而大幅降低記憶體使用量和I/O開銷。

PolarDB PostgreSQL版(相容Oracle)2.0版本支援linear search TO hash table probe,可以顯著提升IN語句的處理效能。特別是在多條件或需要過濾大量資料的SQL中,效能提升更為顯著。

支援LZ4壓縮演算法及安全特性增強

PolarDB PostgreSQL版(相容Oracle)2.0版本引入了多項新功能,包括支援使用者選擇LZ4演算法進行資料列壓縮,以提高壓縮效能,同時仍保留對原來pglz壓縮方式的支援。此外,使用者還可以通過使用pg_read_all_datapg_write_all_data兩個預定義的角色,實現一次性授權tables/views/sequences對象的唯讀或唯寫許可權,為使用者提供更加靈活的資料管理方式。

PolarDB PostgreSQL版(相容Oracle)2.0版本採用了對象許可權粒度的雲上許可權管理,保障資料安全性和可靠性。這一最佳化措施可以協助使用者更好地保護敏感性資料,避免資料泄露和安全性漏洞。

主要功能

PolarDB PostgreSQL版(相容Oracle)2.0版本高度相容Oracle文法,支援Oracle常見文法特性以及分區表、事務能力、PL/SQL、包、異構串連等重要功能,並且進一步提升了高並發、高寫入負載、並行查詢和邏輯複製等方面的效能。

PolarDB PostgreSQL版(相容Oracle)2.0版本主要的Oracle相容性功能如下:

支援Oracle相容的字串類型、數字類型、二進位類型、支援64位的Date類型儲存

PolarDB PostgreSQL版(相容Oracle)2.0版本擴充支援64位的Date類型儲存,支援Oracle相容的年、月、日、時、分、秒層級的Date類型儲存及展示。支援char/varchar2/nvarchar2/nvarchar/binary_integer/number/row/rowid等類型,支援nls_date_formatnls_timestamp_format來控制時間類型的輸出格式。

支援Oracle相容的一系列操作符

PolarDB PostgreSQL版(相容Oracle)2.0版本支援decodegroup_id操作符;支援彙總函式中的order by操作符;支援在內建二元操作符中間添加空格;支援minus集合操作符、支援a.b形式的函數不帶括弧調用;支援空串視為NULL。

支援Oracle相容的字串函數、數字函數、二進位函數、正則函數、採樣函數、彙總函式

PolarDB PostgreSQL版(相容Oracle)2.0版本支援to_date/add_month等一系列時間類型內建的函數;支援instr/lpad/rpad等一系列字串內建函數;支援rawtohex/hextoraw/vsize等一系列二進位相關函數;支援sys_guid等編碼內建函數;支援sample function等採樣函數;支援regexp_count/regex_instr/regex_substr/regex_like等一系列正則函數。支援Oracle相容風格的彙總函式建立。

支援Oracle相容的別名、列名、子句、視圖

PolarDB PostgreSQL版(相容Oracle)2.0版本支援在不同層級的子查詢中使用相同別名、支援表名、列名稱大小寫相容、支援關鍵字別名全相容;insert/select的文法結構中支援使用別名;支援目標列中預設的distinctorder by子句;支援order by子句中的count(*)聚集合函式;支援merge子句中update/delete文法與where並聯使用;支援insert/update後跟形如namespace.table.col文法;支援(+)表串連操作符。

支援ALL_PART_KEY_COLUMNS/USER_PART_KEY_COLUMNS/DBA_PART_KEY_COLUMNS/DBA_ROLE_PRIVS/USER_ROLE_PRIVS等Oracle常用的視圖。

支援Oracle相容的偽列、序列、DML、DDL等相關文法特性

PolarDB PostgreSQL版(相容Oracle)2.0版本支援rownum文法來標誌查詢結果中的行號;支援全域唯一的序列;支援select/delete/update作用於子查詢的文法;支援select for update wait文法;支援merge into文法在視圖中使用;支援基本的HINT文法;支援Rename To文法;支援alter table add (col1, col2)文法;支援create directory文法;支援create context文法;支援connect by子句在執行分層查詢時確定行的父子關係。

支援Oracle相容的分區表建立、修改、擴充功能

PolarDB PostgreSQL版(相容Oracle)2.0版本支援Oracle風格的分區表,包括一級、二級分區的建立,支援List、Range、Hash三種分區的建立。支援常見的CREATE、COALESCE、DROP、EXCHANGE、MERGE、MODIFY、MOVE、RENAME、SPLIT、TRUNCATE等分區管理操作。支援分區表子模板分區、支援間隔分區自動建立、支援Oracle相容的如同A PARTITION(B)的分區調用。

資料庫事務CSN事務快照機制、支援自治事務、支援語句層級交易回復

PolarDB PostgreSQL版(相容Oracle)2.0版本中CSN事務快照是一種新的事務快照機制,用於提升MVCC效能,與原生PostgreSQL使用xid事務號列表作為事務快照不同,CSN快照使用一個單調遞增的64位整數值作為事務快照,既可以加速事務快照產生,也可以提升MVCC中的行可見度判斷效能。

支援在預存程序、匿名塊中使用自治事務,使得該事務特提交狀態獨立於父事務。

支援語句級交易回復,在關閉自動認可的前提下,語句層級的錯誤只會復原當前子事務,而保留主事務運行狀態。

支援Oracle相容的PL/SQL塊行為

PolarDB PostgreSQL版(相容Oracle)2.0版本支援PL/SQL不帶$$符號調用;函數/預存程序支援IN、OUT、INOUT參數,用於對參數進行值的引用傳遞;匿名塊支援變數綁定和兩階段運行;支援constant變數相容;支援隱式聲明的record類型迴圈變數;支援預存程序中的:NEW/:OLD文法現象 ;支援觸發器中使用無傳回值;支援自訂Exception變數;支援Trigger觸發器中的beginend文法。

支援Oracle相容的包功能及集合類型

PolarDB PostgreSQL版(相容Oracle)2.0版本支援自訂包功能的建立和刪除;支援常見的關聯陣列、巢狀表格、可變長的數組等集合類型;支援集合類型的基本初始化、調用、賦值等操作。

支援Oracle相容的內建包

  • DBMS_AQ包提供了訊息佇列入隊、出隊操作的函數。

  • DBMS_AQADM包提供了訊息佇列的配置和管理功能。

  • DBMS_ALERT包提供一組預存程序,用於註冊警報、發送警報和接收警報。

  • DBMS_APPLICATION_INFO包來記錄資料庫中正在執行的模組或事務的名稱,以供以後跟蹤各種模組的效能和調試時使用。

  • DBMS_CRYPTO包提供對儲存資料進行加密、解密的功能,支援AES、DES、雜湊以及訊息摘要等功能。

  • DBMS_JOB包用來建立和管理定時任務,使用者可以提交定時任務在資料庫中定時執行。

  • DBMS_LOB包提供了對大對象的訪問和操作方式,包括BLOB和CLOB等。

  • DBMS_LOCK包提供了將當前會話暫停一段時間的sleep內建函數。

  • DBMS_METADATA包提供了擷取資料庫物件的中繼資料資訊的方法,用於重建資料庫中的對象。

  • DBMS_OUTPUT包可以從預存程序、包或觸發器發送資訊。

  • DBMS_PIPE包支援同一常式在不同會話之間進行管道通訊。

  • DBMS_RANDOM包提供了一系列隨機函數、預存程序。

  • DBMS_RLS包可以使虛擬私人資料庫VPD執行於特定的PolarDB資料庫物件上。

  • DBMS_SESSION包提供從PL/SQL訪問會話、使用者以及其他資訊的介面。

  • DBMS_SQL包提供了使用動態SQL執行資料操作語言 (DML) 和資料定義語言 (Data Definition Language) (DDL) 語句、執行 PL/SQL匿名塊以及調用PL/SQL預存程序和函數的介面。

  • DBMS_UTILITY包提供了各種實用子程式。

  • UTL_ENCODE包提供了一組進行資料編解碼的函數,方便資料在不同主機之間的傳輸。

  • UTL_I18N包提供了一組由ESCAPE_REFERENCE和UNESCAPE_REFERENCE函數組成的服務,可以為PL/SQL編寫的應用程式提供附加的全球化功能。

  • UTL_RAW包提供了用於操作RAW類型資料的函數。

持久化緩衝池與DBLink

PolarDB PostgreSQL版(相容Oracle)2.0版本中資料庫崩潰、重啟後原BufferPool內容不會丟失,待下次程式啟動可以複用之前的Bufferpool記憶體資訊。

支援DBKLink功能,支援使用DBLink串連PostgreSQL資料庫、Oracle資料庫。

支援服務端GBK、GB18030編碼

PolarDB PostgreSQL版(相容Oracle)2.0版本支援服務端使用GBK、GB18030編碼,降低在用戶端GBK環境下額外的編碼轉換成本。

相關文檔

如果您需要將PolarDB PostgreSQL版(相容Oracle)1.0版本遷移至PolarDB PostgreSQL版(相容Oracle)2.0版本,具體操作請參見PolarDB PostgreSQL版(相容Oracle)間的遷移