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

PolarDB PostgreSQL 14版相對(duì)于PolarDB PostgreSQL 11版的變化點(diǎn)

更新時(shí)間:

本文介紹了PolarDB PostgreSQL 11版升級(jí)至PolarDB PostgreSQL 14版后的變化點(diǎn)。

概述

PolarDB PostgreSQL版作為一款企業(yè)級(jí)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有廣泛的應(yīng)用和強(qiáng)大的社區(qū)支持。每個(gè)新版本的發(fā)布都帶來(lái)了許多改進(jìn)和新特性,以提高性能、可用性和安全性。目前,升級(jí)到PolarDB PostgreSQL14版本可以顯著提升數(shù)據(jù)庫(kù)性能與使用體驗(yàn)。

PolarDB PostgreSQL 14版本(簡(jiǎn)稱PG 14版本)引入了新的查詢優(yōu)化算法和存儲(chǔ)引擎,提高了查詢速度和并發(fā)處理能力,能夠更快地處理大量數(shù)據(jù),提升數(shù)據(jù)庫(kù)的響應(yīng)能力和性能。此外,該版本還引入了許多新的功能和增強(qiáng)功能,提供更好的用戶體驗(yàn)和開(kāi)發(fā)者工具。例如,改進(jìn)了對(duì)JSON數(shù)據(jù)類型的支持,使處理和查詢JSON數(shù)據(jù)更加便捷;豐富的監(jiān)控和診斷工具,幫助您更好地理解和優(yōu)化數(shù)據(jù)庫(kù)的性能;加強(qiáng)了數(shù)據(jù)庫(kù)的安全性和可靠性,引入了更嚴(yán)格的訪問(wèn)控制策略和權(quán)限管理功能,保護(hù)您的數(shù)據(jù)免受潛在的安全威脅;改進(jìn)了備份和恢復(fù)功能,使您能夠更輕松地保護(hù)和恢復(fù)數(shù)據(jù)。

升級(jí)到PolarDB PostgreSQL 14版本還意味著您可以與PostgreSQL社區(qū)保持同步,提供更多的資源和支持,幫助您解決問(wèn)題并學(xué)習(xí)數(shù)據(jù)庫(kù)的最佳實(shí)踐。建議您升級(jí)到PolarDB PostgreSQL 14版本。

在PolarDB PostgreSQL 11版本(簡(jiǎn)稱PG 11版本)升級(jí)到PolarDB PostgreSQL 14版本的過(guò)程中,大部分的數(shù)據(jù)類型、內(nèi)置函數(shù)、表列和對(duì)象都沒(méi)有發(fā)生顯著變化,大多數(shù)變化屬于細(xì)節(jié)改進(jìn)。通過(guò)邏輯復(fù)制等方式(推薦使用DTS工具)可以實(shí)現(xiàn)接近100%的兼容性,而具體的變化細(xì)節(jié)如下所示。

系統(tǒng)表和內(nèi)置列

  • 移除oid列的特殊行為。PG 11版本,在表創(chuàng)建過(guò)程中可以使用WITH OIDS來(lái)指定一個(gè)通常不可見(jiàn)的oid列,PG 14版本已經(jīng)移除了該能力。但仍然可以顯式聲明列的數(shù)據(jù)類型為oid。對(duì)于使用WITH OIDS創(chuàng)建的列的操作需要進(jìn)行調(diào)整。PG 11版本中,系統(tǒng)目錄中隱藏的oid列現(xiàn)在變成普通的oid列。因此,SELECT *現(xiàn)在會(huì)輸出這些列,而PG 11版本只有在顯式選擇時(shí)才會(huì)顯示這些列。

  • 將類型為name的表列默認(rèn)標(biāo)記為C排序規(guī)則。數(shù)據(jù)類型為name的比較運(yùn)算符現(xiàn)在可以使用任何排序規(guī)則,而不僅僅使用C排序規(guī)則。為了保持查詢的先前語(yǔ)義,現(xiàn)在明確將類型為name的表列標(biāo)記為具有C排序規(guī)則。這個(gè)副作用是,name列上的正則表達(dá)式運(yùn)算符現(xiàn)在默認(rèn)使用C排序規(guī)則,而不是數(shù)據(jù)庫(kù)的排序規(guī)則,以確定與區(qū)域相關(guān)的正則表達(dá)式模式(例如\w)的行為。如果想在name列上的正則表達(dá)式中使用非C行為,請(qǐng)附加一個(gè)明確的COLLATE子句。(對(duì)于用戶定義的name列,另一種可能性是在創(chuàng)建表時(shí)指定不同的排序規(guī)則,但這只是將不向后兼容性移動(dòng)到比較運(yùn)算符。)

  • information_schema視圖中的對(duì)象名稱列視為name類型而不是varchar類型。根據(jù)SQL標(biāo)準(zhǔn),information_schema視圖中的對(duì)象名稱列被聲明為domain類型sql_identifier。在PostgreSQL中,底層目錄列的類型實(shí)際上是name類型。這個(gè)更改使sql_identifier成為namedomain,而不是之前的varchar。這消除了比較和排序行為中的語(yǔ)義不匹配,可以極大地改善對(duì)限制對(duì)象名稱列的information_schema視圖的查詢的性能。

    說(shuō)明

    不等式限制:例如,SELECT ... FROM information_schema.tables WHERE table_name < 'foo';現(xiàn)在默認(rèn)使用C區(qū)域的比較語(yǔ)義,而不是之前的數(shù)據(jù)庫(kù)默認(rèn)排序規(guī)則。對(duì)這些列進(jìn)行排序也將遵循C排序規(guī)則,可以通過(guò)添加COLLATE "default"子句來(lái)強(qiáng)制使用之前的行為(和低效性)。

  • 刪除過(guò)時(shí)的pg_constraint.consrc列。該列已經(jīng)被廢棄很長(zhǎng)時(shí)間,因?yàn)樗鼪](méi)有根據(jù)其他目錄更改(例如,列重命名)進(jìn)行更新。從pg_constraint獲取檢查約束表達(dá)式的文本版本的推薦方法是pg_get_expr(conbin, conrelid)pg_get_constraintdef()也是一個(gè)有用的替代方法。

  • 刪除過(guò)時(shí)的pg_attrdef.adsrc列。該列已經(jīng)被廢棄很長(zhǎng)時(shí)間了,因?yàn)樗鼪](méi)有根據(jù)其他目錄更改(例如,列重命名)進(jìn)行更新。從pg_attrdef獲取默認(rèn)值表達(dá)式的文本版本的推薦方法是pg_get_expr(adbin, adrelid)

操作符和正則表達(dá)式

  • 刪除階乘運(yùn)算符!!以及函數(shù)numeric_fac( ),但仍然支持階乘函數(shù)。

  • 刪除對(duì)后綴(右一元)操作符的支持。如果正在轉(zhuǎn)儲(chǔ)后綴操作符,則pg_dumppg_upgrade將發(fā)出告警。

  • 防止intarray的包容運(yùn)算符(<@@>)使用GiST索引。之前需要進(jìn)行完整的GiST索引掃描,所以避免進(jìn)行完整的GiST索引掃描并掃描堆,這樣操作速度更快,應(yīng)刪除為此目的創(chuàng)建的索引。

  • 重構(gòu)幾何函數(shù)和運(yùn)算符的代碼。可能會(huì)導(dǎo)致與PG 11版本相比更準(zhǔn)確但稍有不同的結(jié)果。

    說(shuō)明

    與NaN、下溢、溢出和除零有關(guān)的情況的處理比以前更加一致。

  • 允許\D\W通配符在正則表達(dá)式對(duì)換行符敏感模式中匹配換行符。在此模式下,之前它們不匹配換行符,但這與其他常見(jiàn)的正則表達(dá)式引擎的行為不一致,可以使用[^[:digit:]][^[:word:]]來(lái)獲得舊行為。

  • 忽略正則表達(dá)式反向引用時(shí)的限制。例如,在(^\d+).*\1中,^約束應(yīng)在字符串的開(kāi)頭應(yīng)用,但在匹配\1時(shí)不應(yīng)用。

  • 在正則表達(dá)式字符類中禁止將\w用作范圍的起始或結(jié)束。

函數(shù)與表達(dá)式

  • 不允許在負(fù)數(shù)的情況下使用factorial函數(shù)。PG 11版本中,該情況返回1。

  • 通過(guò)使用新算法改進(jìn)了realdouble precision值的輸出性能。PG 11版本中,顯示的浮點(diǎn)數(shù)值默認(rèn)情況下會(huì)四舍五入到6位(對(duì)于real)或15位(對(duì)于double precision),根據(jù)extra_float_digits的值進(jìn)行調(diào)整。在PG 14版本,只有在extra_float_digits大于零時(shí)(默認(rèn)情況),才會(huì)僅輸出保留精確二進(jìn)制值所需的最少位數(shù)。當(dāng)extra_float_digits設(shè)置為零或更小時(shí),行為與PG 11版本相同。此外,浮點(diǎn)數(shù)指數(shù)的格式現(xiàn)在在各個(gè)平臺(tái)上是統(tǒng)一的:除非需要三位數(shù),否則使用兩位數(shù)。

  • 當(dāng)輸入為單個(gè)NaN值時(shí),將var_samp()stddev_samp()numeric參數(shù)返回NULL,PG 11版本中返回NaN。

  • random()setseed()在各個(gè)平臺(tái)上的行為在PG 11版本中是統(tǒng)一的。在使用特定種子值進(jìn)行setseed()調(diào)用后生成的random()值序列可能與PG 11版本中的不同。但是,它也是可重復(fù)的,在PG 11版本中無(wú)法保證,因?yàn)榉?wù)器內(nèi)部的其他隨機(jī)數(shù)使用可能會(huì)干擾。SQL的random()函數(shù)現(xiàn)在具有自己的私有會(huì)話狀態(tài),以防止這種情況發(fā)生。

  • EXTRACT()的返回類型從float8更改為numeric。這樣可以避免某些用法中的精度丟失問(wèn)題。舊行為仍然可以通過(guò)使用舊的底層函數(shù)date_part()來(lái)獲得。此外,在PG 14版本中,EXTRACT(date)對(duì)于不是date數(shù)據(jù)類型的單位會(huì)拋出錯(cuò)誤。

  • 將SQL風(fēng)格的substring()改為具有標(biāo)準(zhǔn)兼容的貪婪行為。在模式可以有多種匹配方式的情況下,在PG 14版本中,初始子模式被視為匹配最少可能的文本,而不是最多的。例如,模式%#"aa*#"會(huì)選擇輸入中的第一個(gè)a組,而不是最后一個(gè)。

  • 引用某些內(nèi)置數(shù)組函數(shù)及其參數(shù)類型的用戶定義對(duì)象必須重新創(chuàng)建。具體來(lái)說(shuō),array_append()array_prepend()array_cat()array_position()array_positions()array_remove()array_replace()width_bucket()在PG 11版本中接受anyarray參數(shù),但在PG 14版本中接受anycompatiblearray。因此,在升級(jí)之前必須刪除引用這些數(shù)組函數(shù)簽名的聚合和操作符等用戶定義對(duì)象,并在升級(jí)完成后重新創(chuàng)建。

  • 在使用屬性編號(hào)時(shí),對(duì)于不存在或已刪除的列進(jìn)行has_column_privilege()檢查時(shí)返回false。在PG 11版本中,此類屬性編號(hào)會(huì)返回?zé)o效列錯(cuò)誤。

  • 修復(fù)to_tsquery()websearch_to_tsquery()以正確解析包含已丟棄令牌的查詢文本。某些已丟棄的令牌(如下劃線)導(dǎo)致這些函數(shù)的輸出產(chǎn)生不正確的tsquery輸出。例如,websearch_to_tsquery('"pg_class pg"')to_tsquery('pg_class <-> pg')在PG 11版本中輸出( 'pg' & 'class' ) <-> 'pg',但在PG 14版本中兩者都輸出'pg' <-> 'class' <-> 'pg'

  • 修復(fù)websearch_to_tsquery()以正確解析帶有多個(gè)相鄰已丟棄令牌的引號(hào)內(nèi)文本。在PG 11版本中,包含多個(gè)相鄰已丟棄令牌的引號(hào)內(nèi)文本被視為多個(gè)令牌,導(dǎo)致輸出不正確的tsquery。例如,websearch_to_tsquery('"aaa: bbb"')在PG 11版本輸出'aaa' <2> 'bbb',但在PG 14版本輸出'aaa' <-> 'bbb'

  • 修復(fù)無(wú)限窗口函數(shù)范圍的處理。在PG 11版本中,像'inf' PRECEDING AND 'inf' FOLLOWING這樣的窗口幀子句會(huì)返回不正確的結(jié)果。

  • 防止tablefunc的函數(shù)normal_rand()接受負(fù)值。負(fù)值會(huì)產(chǎn)生不良結(jié)果。

  • SIMILAR TO ... ESCAPE NULL更改為返回NULL。這種新行為符合SQL規(guī)范。在PG 11版本中,空的ESCAPE值被認(rèn)為是使用默認(rèn)的轉(zhuǎn)義字符串(反斜杠字符)。對(duì)于substring(text FROM pattern ESCAPE text)也適用相同規(guī)則。通過(guò)保持原始函數(shù)不變,在PG 11版本中的行為在舊視圖中得到保留。

  • 使json[b]_to_tsvector()完全檢查其string選項(xiàng)的拼寫(xiě)。

  • 刪除pretty-print作用xpath()XMLTABLE構(gòu)造的結(jié)果。在某些情況下,這些函數(shù)會(huì)在節(jié)點(diǎn)集值中插入額外的空白(換行符和/或空格)。因?yàn)楦鶕?jù)使用情況,空白可能被認(rèn)為是重要的語(yǔ)義。

查詢優(yōu)化

  • 更改非默認(rèn)的effective_io_concurrency值對(duì)并發(fā)性的影響方式。在PG 11版本中,在設(shè)置并發(fā)請(qǐng)求數(shù)量之前會(huì)對(duì)該值進(jìn)行調(diào)整,而在PG 14版本中可以直接使用該值。可以使用以下方法將舊值轉(zhuǎn)換為新值:SELECT round(sum(OLDVALUE / n::float)) AS newvalue FROM generate_series(1, OLDVALUE) s(n);

  • ltree中,當(dāng)lquery模式包含帶括號(hào)的相鄰星號(hào),例如*{2}.{3}正確解釋為{5}

  • 在新的btree索引中,最大索引條目的長(zhǎng)度減少了八個(gè)字節(jié),以改善對(duì)重復(fù)條目的處理。這意味著對(duì)從PG 11版本進(jìn)行pg_upgrade的索引進(jìn)行REINDEX操作可能會(huì)出現(xiàn)故障。

DDL數(shù)據(jù)操作

  • 修復(fù)ALTER FOREIGN TABLE ... RENAME COLUMN以返回更合適的命令標(biāo)記。在PG 11版本中返回ALTER TABLE,在PG 14版本中返回ALTER FOREIGN TABLE

  • 修復(fù)ALTER MATERIALIZED VIEW ... RENAME COLUMN以返回更合適的命令標(biāo)記。在PG 11版本中返回ALTER TABLE,在PG 14版本中返回ALTER MATERIALIZED VIEW

  • 禁止在CREATE/DROP LANGUAGE命令中對(duì)語(yǔ)言名稱使用單引號(hào)。

  • 如果沒(méi)有提供參數(shù)列表并且存在多個(gè)匹配的對(duì)象,則使用DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/ROUTINE時(shí)會(huì)產(chǎn)生錯(cuò)誤,還改進(jìn)了這種情況下的錯(cuò)誤消息。

插件和工具

  • 不允許在psql的\pset format命令中使用非唯一的縮寫(xiě)。在PG 11版本中,例如,\pset format a選擇的是aligned;在PG 14版本中則會(huì)失敗,因?yàn)檫@樣寫(xiě)同樣可以表示asciidoc

  • 移除timetravel擴(kuò)展,移除數(shù)據(jù)類型abstimereltimetinterval,這些類型已被SQL標(biāo)準(zhǔn)類型(例如timestamp)所取代。

  • 防止在pg_stat_sslpg_stat_gssapi系統(tǒng)視圖中顯示輔助進(jìn)程。如果查詢將這些視圖與pg_stat_activity連接,并希望看到輔助進(jìn)程,將需要使用左連接。