色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PostgreSQL 14中TOAST的新壓縮算法LZ4,它能有多快?

微云疏影 ? 來源:yzsDBA ? 作者:yzsDBA ? 2023-01-24 15:54 ? 次閱讀

對于列壓縮選項(xiàng),PostgreSQL 14提供了新的壓縮方法LZ4。與TOAST中現(xiàn)有的PGLZ壓縮方法相比,LZ4壓縮更快。本文介紹如何使用整個(gè)選項(xiàng),并和其他壓縮算法進(jìn)行性能比較。

背景

PG中,頁是存儲數(shù)據(jù)的單位,默認(rèn)是8KB。一般情況下,一行數(shù)據(jù)不允許跨頁存儲。然而,有一些變長的數(shù)據(jù)類型,存儲的數(shù)據(jù)可能超出一頁大學(xué)。為了克服整個(gè)限制,大字段域會被壓縮或者分割成多個(gè)物理行。這個(gè)技術(shù)就是TOAST:

默認(rèn)情況下,如果表中有變長列,行數(shù)據(jù)的大小超過TOAST_TUPLE_THRESHOLD(默認(rèn)2KB)就會觸發(fā)TOAST。首先,會先壓縮數(shù)據(jù);壓縮后如果仍然太大,會溢出存儲。需要注意,如果列的存儲策略指定EXTERNAL/PLAIN,壓縮會被禁止。

PG14之前版本,TOAST僅支持一個(gè)壓縮算法PGLZ(PG內(nèi)置算法)。但是其他壓縮算法可能比PGLZ更快或者有更高的壓縮率。PG14中有了新壓縮選項(xiàng)LZ4壓縮,這是一個(gè)以速度著稱的無損壓縮算法。因此我們可以期望它有助于提高TOAST壓縮和解壓縮的速度。

如何使用LZ4?

為了使用LZ4壓縮特性,在編譯時(shí)需要指定--with-lz4,并且在操作系統(tǒng)中按照LZ4庫。通過GUC參數(shù)default_toast_compression可以指定PG實(shí)例的TOAST默認(rèn)壓縮算法。可以在postgresql.conf中配置,也可以通過SET命令僅改變當(dāng)前連接:

postgres=# SET default_toast_compression=lz4;

SET

在CREATE TABLE創(chuàng)建表時(shí)指定列壓縮算法:

image.png

我們使用d+命令可以看到所有列的壓縮算法。如果列不支持或者沒有指定壓縮算法,那么會在Compression列顯示空格。上面的例子中,id列不支持壓縮算法,col1列使用PGLZ,col2使用LZ4,col3沒有指定壓縮算法,那么它會使用默認(rèn)的壓縮算法。

可以通過ALTER TABLE修改列壓縮算法,但需要注意,修改后的算法僅影響執(zhí)行整個(gè)命令后的insert數(shù)據(jù)。

postgres=# INSERT INTO tbl VALUES (1, repeat('abc',1000), repeat('abc',1000),repeat('abc',1000));

INSERT 0 1

postgres=# ALTER TABLE tbl ALTER COLUMN col1 SET COMPRESSION lz4;

ALTER TABLE

postgres=# INSERT INTO tbl VALUES (2, repeat('abc',1000), repeat('abc',1000),repeat('abc',1000));

INSERT 0 1

postgres=# SELECT id,

postgres-# pg_column_compression(id) AS compression_colid,

postgres-# pg_column_compression(col1) AS compression_col1,

postgres-# pg_column_compression(col2) AS compression_col2,

postgres-# pg_column_compression(col3) AS compression_col3

postgres-# FROM tbl;

id | compression_colid | compression_col1 | compression_col2 | compression_col3

---+-------------------+------------------+-----

1 | | pglz | lz4 | lz4

2 | | lz4 | lz4 | lz4

(2 rows)

可以看到在修改壓縮算法前插入的行,col1仍使用PGLZ壓縮算法,即使將壓縮算法從PGLZ修改到了LZ4。(那么,修改后進(jìn)行解壓時(shí)使用哪個(gè)算法呢?)

需要注意,如果從其他表掃數(shù)據(jù)插入本表,例如CREATE TABLE ...AS...或者INSERT INTO...SELECT...,插入的數(shù)據(jù)使用的壓縮算法仍然使用原始數(shù)據(jù)的壓縮方法。pg_dump和pg_dumpall也添加了選項(xiàng)--no-toast-compuression,使用整個(gè)選項(xiàng)后,不會dump出TOAST壓縮選項(xiàng)。

性能比較

測試了LZ4和PGLZ壓縮率和壓縮速度。并添加了未壓縮數(shù)據(jù)的測試結(jié)果(指定存儲策略為EXTERNAL),對于未壓縮數(shù)據(jù),沒有壓縮和解壓的耗時(shí),但讀和寫數(shù)據(jù)的時(shí)間會增加。

測試使用的數(shù)據(jù):PG documents(一行數(shù)據(jù)一個(gè)HTML文件);SilesiaCorpus提供的數(shù)據(jù),包括HTML、Text、源代碼、可執(zhí)行二進(jìn)制文件、圖片

測試機(jī)器使用Intel? Xeon? Silver 4210CPU@2.20GHz with 10 cores/20 threads/2 sockets。

使用pgbench測試SQL語句執(zhí)行時(shí)間,pg_table_size檢查表大學(xué)(每次執(zhí)行前都執(zhí)行VACUUM FULL排除死記錄的影響)。

壓縮率

PGLZ和LZ4的壓縮率都依賴于重復(fù)數(shù)據(jù),重復(fù)的元組越多,壓縮率越高。但是如果PG評估這樣的壓縮率不好時(shí),就不會執(zhí)行壓縮,即使數(shù)據(jù)大小達(dá)到了閾值。因?yàn)閴嚎s并沒有高效節(jié)省磁盤空間,還會帶來解壓鎖的額外時(shí)間和資源消耗。

當(dāng)前PG14中,PGLZ需要至少25%的壓縮率,LZ則僅比未壓縮數(shù)據(jù)時(shí)小即可。我比較了LZ4、PGLZ的表與未壓縮表大小。可以看到,大部分場景下,PGLZ的壓縮率稍微好點(diǎn),壓縮率評價(jià)為2.23,LZ4的壓縮率為2.07。這意味著PGLZ可以節(jié)省7%的磁盤空間。

poYBAGO307yAMhZTAALAcjHIJ5Q514.jpg

Figure 1 - Comparing table sizes (in KB)

壓縮/解壓縮速度

Insert和查詢時(shí)TOAST數(shù)據(jù)會被壓縮和解壓縮。因此,我執(zhí)行一些SQL語句查看不同壓縮算法帶來的影響。

首先比較了INSERT語句,列使用LZ、PGLZ和未使用壓縮時(shí)的性能。可以看到與未壓縮數(shù)據(jù)比,LZ4耗費(fèi)稍微多一點(diǎn)時(shí)間,PGLZ耗費(fèi)時(shí)間更多。LZ4的壓縮時(shí)間比PGLZ平均節(jié)省20%。這是一項(xiàng)非常顯著的改進(jìn)。

pYYBAGO3072AYW3gAAKf7xUZ0GA941.jpg

Figure 2 - Comparing INSERT performance

下面比較SELECT。與PGLZ相比,LZ4可以節(jié)省20%的時(shí)間,與未壓縮數(shù)據(jù)相比,沒有太大差別。解壓縮的消耗已經(jīng)降到了很低了。

poYBAGO3072AG4HgAAFUDQ_9v08530.jpg

Figure 3 - Comparing SELECT performance

再比較16個(gè)客戶端的INSERT語句并發(fā)。與PGLZ相比使用LZ4的單大文件(HTML,英文文本,源代碼,二進(jìn)制執(zhí)行文件,圖片)的壓縮性能快60%-70%。插入多個(gè)小文件(PG文檔),性能提升不大。和未壓縮的數(shù)據(jù)相比,有巨大提升,猜測使用壓縮減少了寫入磁盤的數(shù)據(jù)量。

poYBAGO3072AAVfUAAFgxdf_G3I282.jpg

Figure 4 - Comparing INSERT performance with 16 clients

16個(gè)客戶端的SELECT,多數(shù)場景下,LZ4性能優(yōu)于PGLZ:

pYYBAGO3076AEIlgAAF4vrnCcPM768.jpg

Figure 5 - Comparing SELECT performance with 16 clients

同樣也比較了使用字符串函數(shù)的SELECT、UPDATE處理文本的速度。整個(gè)場景下LZ4優(yōu)于PGLZ。LZ4壓縮算法的數(shù)據(jù)與未壓縮數(shù)據(jù)相比,函數(shù)處理的速度幾乎一樣,LZ4算法幾乎不會影響字符串操作速度。

poYBAGO307-AKz0pAAFMS33wzeQ709.jpg

Figure 6 - Comparing performance using string functions

與PGLZ相比,LZ4壓縮和解壓縮TOAST數(shù)據(jù)更加高效,并提供很好的性能。和未壓縮數(shù)據(jù)相比,查詢速度幾乎一樣,和PGLZ相比,插入快80%。當(dāng)然某些場景下壓縮率不太好,但如過你想要提升執(zhí)行速度,強(qiáng)烈推薦使用LZ4算法。

同樣需要注意,需要考慮表中的數(shù)據(jù)是否合適壓縮。如果壓縮率不好,它仍然會嘗試壓縮數(shù),然后放棄。這將導(dǎo)致額外的內(nèi)存資源浪費(fèi),并極大影響插入數(shù)據(jù)的速度。

未來

LZ4對TOAST的壓縮和解壓縮性能帶來了很大提升。除了LZ4,還有很多其他壓縮算法比如Zstandard。支持Zstandard用戶可以得到比PGLZ更好的壓縮率。LZ4 HC具有比LZ4解壓98.5%的壓縮速度,但是可以大幅提升壓縮率。希望未來PG版本可以使用更多的壓縮算法。

除了TOAST外,其他場景也需要壓縮。據(jù)我所知,目前開發(fā)版本已經(jīng)支持WAL的LZ4壓縮,這是一項(xiàng)令人興奮的特性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4607

    瀏覽量

    92840
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    762

    瀏覽量

    44117
收藏 人收藏

    評論

    相關(guān)推薦

    PostgreSQL將不再支持MD5密碼

    根據(jù) PostgreSQL 代碼倉庫的最新動態(tài),近日有維護(hù)者提交了“棄用 MD5 密碼支持”的 commit。 該維護(hù)者指出,MD5 被認(rèn)為不適合用作加密散列算法已有一段時(shí)間。 此外
    的頭像 發(fā)表于 12-10 16:14 ?113次閱讀

    MySQL還能跟上PostgreSQL的步伐嗎

    Can MySQL Catch Up with PostgreSQL’s Momentum?[2] 譯者:馮若航[3],Vonng,Pigsty[4]?作者,PostgreSQL 大法師,數(shù)據(jù)庫老司機(jī),云計(jì)算泥石流。 MySQ
    的頭像 發(fā)表于 11-18 10:16 ?199次閱讀
    MySQL還能跟上<b class='flag-5'>PostgreSQL</b>的步伐嗎

    【BearPi-Pico H3863星閃開發(fā)板體驗(yàn)連載】LZO壓縮算法移植

    壓縮算法使用 一、概述 壓縮算法是一類用于減小數(shù)據(jù)大小的計(jì)算方法,它們在數(shù)據(jù)存儲和傳輸領(lǐng)域扮演著重要角色。壓縮
    發(fā)表于 11-10 21:45

    壓縮算法的類型和應(yīng)用

    壓縮算法是一種通過減少數(shù)據(jù)量來節(jié)省存儲空間或傳輸數(shù)據(jù)的技術(shù)。壓縮算法可以分為兩種類型:有損壓縮和無損壓縮
    的頭像 發(fā)表于 10-21 13:50 ?258次閱讀

    Huffman壓縮算法概述和詳細(xì)流程

    Huffman壓縮算法是一種基于字符出現(xiàn)頻率的編碼算法,通過構(gòu)建Huffman樹,將出現(xiàn)頻率高的字符用短編碼表示,出現(xiàn)頻率低的字符用長編碼表示,從而實(shí)現(xiàn)對數(shù)據(jù)的壓縮
    的頭像 發(fā)表于 10-21 13:48 ?239次閱讀

    使用qboot時(shí)選擇了壓縮率更高的zip算法,但是發(fā)現(xiàn)編譯報(bào)錯(cuò),為什么?

    在使用qboot時(shí)選擇了壓縮率更高的zip算法,但是發(fā)現(xiàn)編譯報(bào)錯(cuò),如下圖:
    發(fā)表于 09-26 07:22

    【PHYTEC AM62x開發(fā)板試用】準(zhǔn)備工作

    locales lz4 openssh-client pylint python python3 python3-distutils python3-git python3-jinja2
    發(fā)表于 07-01 16:22

    4G工業(yè)網(wǎng)關(guān)的主要功能有哪些?

    在現(xiàn)代工業(yè)環(huán)境,隨著物聯(lián)網(wǎng)(IoT)技術(shù)的廣泛應(yīng)用,4G工業(yè)網(wǎng)關(guān)作為一種關(guān)鍵設(shè)備,正逐漸發(fā)揮著其不可替代的作用。這種設(shè)備不僅實(shí)現(xiàn)了工業(yè)現(xiàn)場設(shè)備與網(wǎng)絡(luò)之間的連接,還提供了許多強(qiáng)大的功能,以確保數(shù)據(jù)
    的頭像 發(fā)表于 06-21 13:47 ?352次閱讀
    <b class='flag-5'>4</b>G工業(yè)網(wǎng)關(guān)的主要功<b class='flag-5'>能有</b>哪些?

    請問STM8L151的速度有多快

    STM8L151的速度有多快?我配置的16MHz的晶體,打算測量us級的脈沖寬度,不知道能不能勝任,哪位用過的給個(gè)建議,謝謝!
    發(fā)表于 05-15 08:27

    STM32的DAC外設(shè)速度是多快的?

    請教,STM32的DAC外設(shè)速度是多快的?產(chǎn)品手冊沒有直接給出,不像ADC,產(chǎn)品手冊直接給出, 比如\"1Msps\".產(chǎn)品手冊里會有這樣的描述,看不太明白,請大家給指點(diǎn)一下。
    發(fā)表于 05-08 08:06

    【RTC程序設(shè)計(jì):實(shí)時(shí)音視頻權(quán)威指南】音視頻的編解碼壓縮技術(shù)

    。現(xiàn)在比較常用的,壓縮文件為zip文件其使用的算法結(jié)合了lZ77和霍夫曼編碼的優(yōu)點(diǎn),同時(shí)實(shí)現(xiàn)了重復(fù)數(shù)據(jù)的壓縮和字符出現(xiàn)頻率的編碼,在壓縮率和
    發(fā)表于 04-28 21:04

    FPGA壓縮算法有哪些

    在圖像壓縮算法可以采用哈夫曼編碼的方式對編碼冗余的信息進(jìn)行壓縮,可以采用預(yù)測的方式來減少像素間冗余,可以采用量化的方式完成心理視覺冗余信息的去除
    的頭像 發(fā)表于 04-15 11:48 ?637次閱讀
    FPGA<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>有哪些

    基于門控線性網(wǎng)絡(luò)(GLN)的高壓縮比無損醫(yī)學(xué)圖像壓縮算法

    實(shí)現(xiàn)基于門控線性網(wǎng)絡(luò)(GLN)的高壓縮比無損醫(yī)學(xué)圖像壓縮算法,以提高醫(yī)學(xué)圖像存儲和分發(fā)系統(tǒng)的效率。與“傳統(tǒng)”的基于上下文的數(shù)據(jù)壓縮算法相比,
    的頭像 發(fā)表于 04-08 10:29 ?656次閱讀
    基于門控線性網(wǎng)絡(luò)(GLN)的高<b class='flag-5'>壓縮</b>比無損醫(yī)學(xué)圖像<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>

    【LicheeRV-Nano開發(fā)套件試用連載體驗(yàn)】 + 2、鏡像燒錄

    /releases 1、下載官方制作好的鏡像文件到ubuntu; 2、PC插入TF卡; 3、輸入命令燒錄:lz4 -d licheervnano-20240206-0802.img.lz4 | sudo
    發(fā)表于 03-08 09:50

    地平線正式開源Sparse4D算法

    地平線將業(yè)內(nèi)領(lǐng)先的純視覺自動駕駛算法——Sparse4D系列算法開源,推動行業(yè)更多開發(fā)者共同參與到端到端自動駕駛、稀疏感知等前沿技術(shù)方向的探索。目前,Sparse
    的頭像 發(fā)表于 01-23 10:18 ?766次閱讀
    主站蜘蛛池模板: adc免费观看| 白丝美女被狂躁免费漫画| 耻辱の奴隷淑女中文字幕| 久爱精品亚洲电影午夜| 色百度网址大全| 757一本到午夜宫| 国产在线观看91精品| 日本孕妇大胆孕交| 97免费观看视频| 精品国产乱码久久久久久上海公司| 日本伦理电影聚| 88蜜桃人妻无码精品系列| 好男人好资源在线播放| 少妇高潮惨叫久久久久久欧美| 99视频全部看免费观| 久久永久免费视频| 亚洲黄色高清| 国产精品美女久久久久浪潮AV| 青草国产超碰人人添人人碱 | 亚洲爆乳少妇精品无码专区| 超碰视频在线观看| 暖暖日本手机免费完整版在线观看| 一个人在线观看免费高清视频| 国产欧美一区二区精品仙草咪 | 性感尼姑风流寺| 俄罗斯性xxxx| 日本福利片午夜免费观着| 97在线视频网站| 猫咪av永久最新域名| 永久免费看mv网站入口| 极品少妇高潮啪啪无码吴梦 | 扒开女人下面使劲桶视频| 男男被强bl高h文| 中文字幕一区二区三区在线不卡| 精品久久久久久久99热| 亚洲精品一本之道高清乱码| 国产午夜精品理论片免费观看| 日本午夜精品一区二区三区电影| blacked黑人战小美女| 欧美videos人牛交| 69国产精品人妻无码免费|