chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

微云疏影 ? 來源:yzsDBA ? 作者:yzsDBA ? 2023-01-24 15:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

背景

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

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

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+命令可以看到所有列的壓縮算法。如果列不支持或者沒有指定壓縮算法,那么會(huì)在Compression列顯示空格。上面的例子中,id列不支持壓縮算法,col1列使用PGLZ,col2使用LZ4,col3沒有指定壓縮算法,那么它會(huì)使用默認(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)后,不會(huì)dump出TOAST壓縮選項(xiàng)。

性能比較

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

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

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

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

壓縮率

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

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

poYBAGO307yAMhZTAALAcjHIJ5Q514.jpg

Figure 1 - Comparing table sizes (in KB)

壓縮/解壓縮速度

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

首先比較了INSERT語句,列使用LZ、PGLZ和未使用壓縮時(shí)的性能??梢钥吹脚c未壓縮數(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ù)相比,有巨大提升,猜測(cè)使用壓縮減少了寫入磁盤的數(shù)據(jù)量。

poYBAGO3072AAVfUAAFgxdf_G3I282.jpg

Figure 4 - Comparing INSERT performance with 16 clients

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

pYYBAGO3076AEIlgAAF4vrnCcPM768.jpg

Figure 5 - Comparing SELECT performance with 16 clients

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

poYBAGO307-AKz0pAAFMS33wzeQ709.jpg

Figure 6 - Comparing performance using string functions

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

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

未來

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

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

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

    關(guān)注

    23

    文章

    4764

    瀏覽量

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

    關(guān)注

    1

    文章

    789

    瀏覽量

    46413
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    電能質(zhì)量在線監(jiān)測(cè)裝置數(shù)據(jù)壓縮對(duì)裝置性能有哪些影響?

    電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)壓縮功能對(duì)性能的影響 總體可控且輕微 ,核心集中在「CPU 占用、內(nèi)存消耗、存儲(chǔ)讀寫速度、數(shù)據(jù)傳輸延遲」四大維度,且通過廠商優(yōu)化(硬件加速、算法選型、資源調(diào)度)可將負(fù)面影響
    的頭像 發(fā)表于 12-17 10:28 ?121次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置數(shù)據(jù)<b class='flag-5'>壓縮</b>對(duì)裝置性<b class='flag-5'>能有</b>哪些影響?

    如何配置電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)壓縮存儲(chǔ)功能?

    (FPGA/DSP),支持全類型數(shù)據(jù)壓縮 端裝置 (工業(yè)側(cè)):軟件壓縮 (LZ4/ZLIB),支持穩(wěn)態(tài)數(shù)據(jù)和報(bào)表壓縮 經(jīng)濟(jì)型裝置 (低壓
    的頭像 發(fā)表于 12-17 10:26 ?294次閱讀
    如何配置電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)<b class='flag-5'>壓縮</b>存儲(chǔ)功能?

    電能質(zhì)量在線監(jiān)測(cè)裝置支持哪些數(shù)據(jù)壓縮算法

    增強(qiáng)。以下是主流算法的詳細(xì)支持情況: 一、無損壓縮算法(核心用于關(guān)鍵數(shù)據(jù)) 算法名稱 核心原理 適用數(shù)據(jù)類型 壓縮比 裝置支持情況 DEFL
    的頭像 發(fā)表于 12-12 14:08 ?203次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置支持哪些數(shù)據(jù)<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>?

    電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)壓縮存儲(chǔ)功能支持的數(shù)據(jù)格式可以修改嗎?

    操作性與法律效力 壓縮算法 / 容器格式 ZLIB、GZIP、ZIP、LZ4 部分可配置 廠家會(huì)提供有限選擇
    的頭像 發(fā)表于 12-11 16:39 ?874次閱讀
    電能質(zhì)量在線監(jiān)測(cè)裝置的數(shù)據(jù)<b class='flag-5'>壓縮</b>存儲(chǔ)功能支持的數(shù)據(jù)格式可以修改嗎?

    應(yīng)用于暫態(tài)波形存儲(chǔ)的數(shù)據(jù)壓縮算法需要考慮哪些因素?

    應(yīng)用于暫態(tài)波形存儲(chǔ)的數(shù)據(jù)壓縮算法,需圍繞 暫態(tài)波形特性 (突變性、關(guān)鍵特征依賴性)、 工業(yè)場(chǎng)景需求 (實(shí)時(shí)性、硬件限制)及 數(shù)據(jù)應(yīng)用價(jià)值 (故障溯源、合規(guī)性)綜合考量,核心需關(guān)注以下六大維度: 一
    的頭像 發(fā)表于 11-05 15:02 ?162次閱讀

    SM4算法實(shí)現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進(jìn)行加密、解密運(yùn)算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴(kuò)展都是采用32輪非線性迭代結(jié)構(gòu)
    發(fā)表于 10-30 08:10

    國密系列算法簡(jiǎn)介及SM4算法原理介紹

    在后續(xù)分享中分析AES和SM4算法的共同特點(diǎn)和可重構(gòu)方法。 二、 SM4算法原理 圖2所示為128位輸入、128位密鑰和128位輸出的SM4
    發(fā)表于 10-24 08:25

    優(yōu)化boot4的乘法運(yùn)算周期

    可以在不同的時(shí)鐘周期內(nèi)完成,從而并行化運(yùn)算流程,提高乘法器的運(yùn)算性能。 采用多級(jí)壓縮:在Boot4乘法器,使用了基于連乘算法的多級(jí)壓縮技術(shù)
    發(fā)表于 10-21 13:17

    低內(nèi)存場(chǎng)景下的高效壓縮利器:FastLZ壓縮庫應(yīng)用實(shí)踐指南

    聯(lián)網(wǎng)設(shè)備等場(chǎng)景的嚴(yán)苛需求。 FastLZ ——是一款高效且小巧的開源壓縮庫,主要用于實(shí)現(xiàn)基于LZ77算法的字節(jié)對(duì)齊數(shù)據(jù)壓縮。LZ77(Lem
    的頭像 發(fā)表于 07-22 15:13 ?230次閱讀
    低內(nèi)存場(chǎng)景下的高效<b class='flag-5'>壓縮</b>利器:FastLZ<b class='flag-5'>壓縮</b>庫應(yīng)用實(shí)踐指南

    基于FPGA的壓縮算法加速實(shí)現(xiàn)

    本設(shè)計(jì),計(jì)劃實(shí)現(xiàn)對(duì)文件的壓縮及解壓,同時(shí)優(yōu)化壓縮中所涉及的信號(hào)處理和計(jì)算密集型功能,實(shí)現(xiàn)對(duì)其的加速處理。本設(shè)計(jì)的最終目標(biāo)是證明在充分并行化的硬件體系結(jié)構(gòu) FPGA 上實(shí)現(xiàn)該算法時(shí),可
    的頭像 發(fā)表于 07-10 11:09 ?2137次閱讀
    基于FPGA的<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>加速實(shí)現(xiàn)

    展望PostgreSQL 18的新特性

    距離 PostgreSQL 17 正式發(fā)布已近半年,按照每年發(fā)布一個(gè)大版本的慣例,PostgreSQL 18 預(yù)計(jì)將在 2025 年底發(fā)布。距離正式發(fā)布還有一段時(shí)間,社區(qū)的開發(fā)工作仍在如火如荼地進(jìn)行。
    的頭像 發(fā)表于 03-03 16:51 ?1423次閱讀
    展望<b class='flag-5'>PostgreSQL</b> 18的新特性

    嵌入式系統(tǒng)的代碼優(yōu)化與壓縮技術(shù)

    在當(dāng)今數(shù)字化時(shí)代,嵌入式系統(tǒng)廣泛應(yīng)用于各個(gè)領(lǐng)域,從智能家居設(shè)備到工業(yè)控制系統(tǒng),從汽車電子到可穿戴設(shè)備,它們無處不在。而在嵌入式系統(tǒng)開發(fā),代碼優(yōu)化與壓縮技術(shù)至關(guān)重要,直接影響著系統(tǒng)的性能、成本
    發(fā)表于 02-26 15:00

    利用SSIS源、查找及目標(biāo)組件集成PostgreSQL數(shù)據(jù)至ETL流程

    使用SSIS源、查找和目標(biāo)組件在ETL中集成PostgreSQL數(shù)據(jù) Devart SSIS Data Flow Components for PostgreSQL 允許您將 PostgreSQL
    的頭像 發(fā)表于 02-07 09:24 ?1828次閱讀
    利用SSIS源、查找及目標(biāo)組件集成<b class='flag-5'>PostgreSQL</b>數(shù)據(jù)至ETL流程

    dbForge Studio for PostgreSQL:PostgreSQL數(shù)據(jù)庫多功能集成開發(fā)環(huán)境

    什么是 dbForge Studio for PostgreSQL?是一個(gè)集成工具包包含 PostgreSQL 所需的一切 上下文感知SQL代碼補(bǔ)全、智能格式化和語法驗(yàn)證 消除性能瓶頸的查詢優(yōu)化器
    的頭像 發(fā)表于 01-16 17:26 ?902次閱讀

    EE-257:面向Blackfin處理器的引導(dǎo)壓縮/解壓縮算法

    電子發(fā)燒友網(wǎng)站提供《EE-257:面向Blackfin處理器的引導(dǎo)壓縮/解壓縮算法.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:56 ?0次下載
    EE-257:面向Blackfin處理器的引導(dǎo)<b class='flag-5'>壓縮</b>/解<b class='flag-5'>壓縮</b><b class='flag-5'>算法</b>