日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

PolarDB PostgreSQL(兼容Oracle)2.0版本與1.0版本差異說明

更新時間:

本文介紹了PolarDB PostgreSQL版(兼容Oracle)2.0版本相較于PolarDB PostgreSQL版(兼容Oracle)1.0版本的差異說明。

概述

相較于PolarDB PostgreSQL版(兼容Oracle)1.0版本,PolarDB PostgreSQL版(兼容Oracle)2.0版本基于新的兼容性架構,以兼容Oracle語法為基準進行開發。

PolarDB PostgreSQL版(兼容Oracle)2.0版本對PostgreSQL在分布式負載前提下的高并發、高寫入負載、并行查詢和邏輯復制等方面的性能相比于PolarDB PostgreSQL版(兼容Oracle)1.0版本有了進一步提升。

本文詳細描述了兩個版本的具體區別,供您參考。請以目前發布的PolarDB PostgreSQL版(兼容Oracle)2.0版本(20230930)為準,部分特性將在隨后的版本中逐步支持。

產品性能和功能特性

性能顯著提升

使用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) 和數據定義語言 (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環境下額外的編碼轉換成本。

2.0版本相較于1.0版本語法兼容性差異說明

數據類型和偽列

  • 不支持ABSTIME類型。

  • 不支持COLUMN_VALUE偽列。

DDL語法

  • 不支持CREATE USER后使用PROFILE/PASSWORD EXPIRE/CREATE DBLINK等語法。

  • 不支持ALTER USER USERNAME后使用NO EXEMPT ACCESS POLICY語法。

  • 不支持DROP USER后使用CASCADE語法。

  • 不支持GRANT EXEMPT ACCESS POLICY TO USERNAME語法。

  • 不支持SHOW ROLE語法。

  • 不支持CREATE INDEX后使用NOLOGGING語法。

  • 不支持CREATE/DROP/ALTER PROFILE/QUEUE/QUEUE TABLE語法。

視圖和分區表

  • 部分Oracle兼容視圖的定義中不存在SCHEMA_NAME列。

  • 不支持對CREATE OR REPLACE視圖進行列重命名。

  • 不支持DBA_PROFILES視圖。

  • 分區表的父表會默認至少有一個子分區。

  • 不支持在非DEFAULT分區中插入空值。

  • 不允許對HASH分區進行ATTACH操作。

  • 對于LIST類型的分區表,如果包含了默認分區,則不允許進行ADD分區操作。

函數、存儲過程及觸發器

  • 不支持CREATE FUNCTION/PROCEDURE后使用PIPELINED/DETERMINISTIC語法,不支持ALTER PROCEDURE后使用STRICT語法。

  • 不支持函數和過程具有相同的名稱。

  • 不支持函數和過程的參數是子查詢。

  • 不支持TO_CHAR函數使用YYyy格式表示年份、Mi格式表示分鐘、ff[7-9]格式輸出秒,在未指定年份的情況下使用DDD格式。

  • 不支持REGEXP_REPLACE函數的第四個輸入參數為'n'

  • 不支持DECODE函數只有兩個參數輸入,不支持字符參數上使用COLLATE修飾。

  • 不支持函數GET_RAW_PAGE雙引號作為第一個參數。

  • 不支持將ROWNUM作為函數參數。

  • 如果存儲過程沒有ANYELEMENT類型的輸入,則輸出中不能有ANYELEMENT類型。

  • 在SQL函數中,如果參數具有默認值,則后續的參數也必須具有默認值。

  • 不支持登錄和登出觸發器。

  • 觸發器名稱長度限制為54個字符。

事務

  • 不支持函數和觸發器中的自治事務。

  • 如果自治事務中發生了寫操作,必須顯式提交或回滾事務來結束,否則事務會失敗。

SQL查詢

  • 不支持的優化方式:CHOOSE/FIRST_ROWS/FIRST_ROWS_10/FIRST_ROWS_100/FIRST_ROWS_1000

  • 不支持在子查詢中使用同義詞來調用父查詢中的對象。

  • 不支持嵌套同義詞。

  • 不支持在INSERT ALL INTO xxxSELECT xxx之間沒有VALUES xxx的語法。

  • 不支持使用DUAL表中的DUMMY列與數值類型進行比較操作。

  • 不支持使用'!!a'來表示a的階乘。

  • 不支持在非不變函數中調用其他函數。

  • 不支持在創建COLLATION時將ICU_SHOR_FORM設置為'AN_CX_EX_LROOT_NO_S3'

  • 不支持使用BIT類型為BOOL類型賦予默認值。

  • 不支持使用列來為其他列賦予默認值。

  • 不支持在SQL層面使用包變量。

  • 不允許只聲明包頭而不聲明包體來使用包。

  • 不支持DBMS_PROFILERDBMS_SCHEDULE內置包。

  • 不支持UTL_FILEUTL_HTTPUTL_SMTPUTL_URL內置包。

  • 不支持在DBMS_SQL包中使用DBMS_SQL.TO_REFCURSORDBMS_SQL.TO_CURSOR_NUMBER

  • 不支持在DBMS_SQL包中使用SELECT INTO語句。不支持對非SELECT語句使用DEFINE_COLUMN,不支持使用DBMS_SQL.NATIVE常量進行賦值。

  • 不支持在DBM_UTILITY包中將純數字作為表名,不支持使用NULL作為GET_HASH_VALUE輸入參數。

  • 不支持在DBMS_CRYPTO包中,在RANDOMBYTES中使用0作為輸入參數。

  • 不支持在UTLRAW包中的SUBSTR函數將起始位置設置為超出RAW總長度的值。

  • 不支持在DBMS_PIPE包的SEND_MESSAGE函數中的TIMEOUT參數中使用負數。

  • 不支持DBMS_RLS策略函數返回NULL

  • 不支持在DBMS_LOB包的INSTR函數中使用負數作為輸入參數。

PL/SQL及集合類型

  • 不支持的錯誤碼:INVALID_CURSOR/INVALID_NUMBER/NO_DATA_FOUND/VALUE_ERROR

  • 不支持在非異常狀況下調用SQLCODESQLERRM

  • 不支持強類型游標綁定的動態SQL。

  • 不支持在帶參數的動態SQL中執行DDL操作。

  • 不支持在存儲過程中使用%type%rowtype來聲明局部函數的輸入參數。

  • 不支持集合操作和集合判斷,不支持直接初始化關聯數組。

  • 不支持二維集合類型。

  • 不支持將STRINGLONG類型用作關聯數組的索引類型。

  • 不支持將關聯數組用作參數類型。

  • 不支持在全局范圍內對集合類型聲明非空屬性。

  • 不支持在RECORD變量中包含集合類型的字段。

  • 關聯數組變量默認被初始化為空而不為NULL,且不允許被賦值為NULL