OrioleDB: 新一代PostgreSQL存儲引擎

PostgreSQL 12 引入了可插拔式的表存儲方法接口,允許為不同的表選擇不同的存儲機制,例如用于 OLTP 操作的堆表(HEAP、默認)、用于 OLAP 操作的列式表(Citus),以及用于超快速搜索處理的內存表。

PostgreSQL 這一特性類似于 MySQL 的插件式存儲引擎,例如 InnoDB、MyISAM。

今天給大家介紹一個云原生的 PostgreSQL 存儲引擎:OrioleDB。

功能特性

OrioleDB 旨在解決 PostgreSQL 默認 HEAP 表在 OLTP(在線事務處理)場景中的一些性能瓶頸,并引入現代數據庫存儲技術的設計理念,提供更高的并發性能、更低的延遲,并減少存儲開銷。

在這里插入圖片描述
OrioleDB 以擴展插件形式提供,基于 PostgreSQL 協議發布,提供的核心特性包括:

  • 基于現代存儲技術(SSD、NVRAM)設計,優化多核 CPU 和 NUMA 架構下的資源分配,提升吞吐量。
  • 基于 Undo Log 的 MVCC,將舊版本數據存儲在獨立的 Undo Log 而不是主表中。事務回滾或舊版本清理時直接操作 Undo Log,避免主表數據膨脹。同時還支持 64 位事務 ID,避免了回卷問題。
  • 聚簇索引,默認使用聚簇索引(類似 MySQL/InnoDB),數據按主鍵順序存儲,減少隨機 I/O,提升范圍查詢性能。
  • 壓縮存儲,支持頁級數據壓縮,降低存儲成本。
  • 分布式支持,Copy-on-Write 檢查點提供結構一致的數據快照,兼容 SSD 特性,并支持緊湊的行級 WAL 記錄。基于行級 WAL 日志和 Raft 共識算法,支持并行回放和 Active-Active 多主架構,適合分布式部署。

使用示例

目前,OrioleDB 還處于 Beta 階段,最簡單的使用方法就是利用 Docker:

docker run -d --name orioledb -p 5432:5432 orioledb/orioledb

然后安裝擴展插件并創建數據表:

-- 創建擴展插件
CREATE EXTENSION orioledb;-- 創建表
CREATE TABLE blog_post
(id int8 NOT NULL,title text NOT NULL,body text NOT NULL,author text NOT NULL,published_at timestamptz  NOT NULL DEFAULT CURRENT_TIMESTAMP,views bigint NOT NULL,PRIMARY KEY(id)
) USING orioledb; -- 使用OrioleDB存儲引擎-- 創建索引
CREATE INDEX blog_post_published_at ON blog_post(published_at);

OrioleDB 使用聚簇索引,因此主鍵的選擇對于性能至關重要;如果沒有指定主鍵字段,數據庫會基于 ctid 字段創建一個隱藏的替代主鍵。

接下來就可以執行一些 DML 操作:

INSERT INTO blog_post (id, title, body, author, views)
VALUES (1, 'Hello, World!', 'This is my first blog post.', 'John Doe', 1000);SELECT * FROM blog_post ORDER BY published_at DESC LIMIT 10;

更詳細的使用介紹和注意事項可以參考以下官方文檔:

https://www.orioledb.com/docs

性能比較

以下是一些 OrioleDB 和默認 HEAP 存儲引擎的性能比較:

測試一:只讀測試顯示 OrioleDB 存儲引擎的性能是 PostgreSQL 默認引擎的 4 倍。

在這里插入圖片描述

測試二:讀寫測試顯示 OrioleDB 存儲引擎的性能是 PostgreSQL 默認引擎的 4.5 倍。

在這里插入圖片描述

測試三:OrioleDB 存儲引擎的磁盤讀取(IOPS)是 PostgreSQL 默認引擎的 1/6。

在這里插入圖片描述

測試四:OrioleDB 存儲引擎的磁盤寫入比 PostgreSQL 默認引擎大幅減少。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73531.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73531.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73531.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電腦自動關機故障維修案例分享

電腦基本配置: C P U: AMD A10 9700 內存:8G 硬盤:金邦512G固態硬盤 主板:華碩 A320M-F 顯卡:集成(核心顯卡) 操作系統:Win10專業版 故障描述: 使用一段時間會黑屏…

JVM垃圾收集器相關面試題(1)

垃圾收集與內存管理摘要 一.核心垃圾收集算法對比 算法原理優點缺點適用場景標記-清除兩次遍歷(標記存活對象→清除未標記對象)實現簡單內存碎片化、雙遍歷效率低老年代(結合整理)標記-復制內存對半分,存活對象復制到…

棧(LIFO)算法題

1.刪除字符串中所有相鄰的重復字符 注意,我們需要重復處理,而不是處理一次相鄰的相同元素就結束了。對示例來說,如果只進行一次處理,結果為aaca,但是處理之后又出現了相鄰的重復元素,我們還得繼續處理&…

conda的基本使用及pycharm里設置conda環境

創建conda環境 conda create --name your_env_name python3.8 把your_env_name換成實際的conda環境名稱,python后邊的根據自己的需要,選擇python的版本。 激活conda環境 conda activate your_env_name 安裝相關的包、庫 conda install package_name …

Python基于深度學習的多模態人臉情緒識別研究與實現

一、系統架構設計 A[數據采集] --> B[預處理模塊] B --> C[特征提取] C --> D[多模態融合] D --> E[情緒分類] E --> F[系統部署] F --> G[用戶界面] 二、數據準備與處理 1. 數據收集 - 視頻數據:FER2013(靜態圖像&#xff0…

synchronized與 Java內置鎖(未寫完)

文章目錄 一、 synchronized 關鍵字二、Java對象結構1. 對象頭2. 對象體3. 對齊字節4. 對象頭中的字段長度5. Mark Word 的結構信息6. 使用 JOL 工具查看對象的布局 三、Java 內置鎖機制3.1 內置鎖的演進過程1. 無鎖狀態2. 偏向鎖狀態3. 輕量級鎖狀態4. 重量級鎖狀態 一、 sync…

LLM(3): Transformer 架構

Transformer 架構是當前大語言模型的主力架構和基礎技術,本文以通俗易懂的方式,對此作簡要介紹。 1.4 介紹 Transformer 架構 大多數現代的大規模語言模型(LLMs)依賴于 Transformer 架構,這是一種在 2017 年的論文《…

11.【.NET 8 實戰--孢子記賬--從單體到微服務--轉向微服務】--微服務基礎工具與技術--Ocelot 網關--整合日志

網關作為微服務架構的入口,承載著各服務間的請求轉發與安全校驗,其日志信息尤為關鍵。通過整合網關日志,可以將分散在不同系統中的訪問記錄、錯誤提示和異常信息集中管理,為問題排查提供全景視角。在排查故障時,統一日…

88.HarmonyOS NEXT 性能監控與調試指南:構建高性能應用

溫馨提示:本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦! HarmonyOS NEXT 性能監控與調試指南:構建高性能應用 文章目錄 HarmonyOS NEXT 性能監控與調試指南:構建高性能應用1. 性能監…

012---狀態機的基本知識

1. 摘要 文章為學習記錄。主要介紹狀態機概述、狀態轉移圖、狀態編碼、狀態機寫法、狀態機代碼示例。 2. 狀態機概述 狀態機 (Finite State Machine),也稱為同步有限狀態機,用于描述有先后順序或時序規律的事情。 “同步”&…

deepseek+kimi做ppt教程記錄

1.首先注冊deepseek和kimi deepseek官網:https://chat.deepseek.com/ kimi官網:https://kimi.moonshot.cn/ 以下以一篇工作總結報告為例 2.使用deepseek生成ppt大綱 讓deepseek生成kimi生成ppt所需要的內容時,需要注意提示詞內容,…

Java Module介紹

Java模塊系統自Java 9開始引入,旨在提供更強大的封裝機制、清晰的依賴關系定義以及可靠的配置。Java平臺本身也被模塊化了,提供了多個核心模塊以及其他用于支持不同功能的模塊。以下是一些重要的Java標準模塊: java.base - 這是最基礎的模塊…

SOME/IP:用Python實現協議訂閱、Offer、訂閱ACK與報文接收

文章目錄 前言一、代碼層次二、詳細代碼1. eth_scapy_sd.py2、eth_scapy_someip.py3、network_define.py4、packet_define.py5、unpack_define.py6、someip_controller.py 前言 1、需要pip安裝scapy庫 2、需要修改根據實際情況配置network_define.py 3、執行someip_controller…

【Linux內核系列】:文件系統收尾以及軟硬鏈接詳解

🔥 本文專欄:Linux 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄: 世界上只有一種個人英雄主義,那么就是面對生活的種種失敗卻依然熱愛著生活 內容回顧 那么在之前的學習中,我們…

最新版Chrome瀏覽器加載ActiveX控件技術--allWebPlugin中間件一鍵部署瀏覽器擴展

allWebPlugin簡介 allWebPlugin中間件是一款為用戶提供安全、可靠、便捷的瀏覽器插件服務的中間件產品,致力于將瀏覽器插件重新應用到所有瀏覽器。它將現有ActiveX控件直接嵌入瀏覽器,實現插件加載、界面顯示、接口調用、事件回調等。支持Chrome、Firefo…

基于SpringBoot和MybatisPlus實現通用Controller

基于SpringBoot和MybatisPlus實現通用Controller,只需要創建實體類和mapper接口,單表增刪改查接口就已經實現,提升開發效率 1.定義通用controller package com.xian.controller;import cn.hutool.core.map.MapUtil; import com.baomidou.my…

Axure大屏可視化原型模板及素材:數據可視化的高效解決方案

數據可視化已成為企業決策、運營分析、市場洞察的重要工具。數據可視化大屏,作為數據展示和交互的直觀平臺,能夠實時呈現關鍵數據,幫助企業快速做出決策。Axure作為原型設計領域的領先工具,以其豐富的組件庫、強大的交互設計能力和…

YOLOE:實時查看任何事物

摘要 https://arxiv.org/pdf/2503.07465v1 目標檢測和分割在計算機視覺應用中得到了廣泛應用,然而,盡管YOLO系列等傳統模型高效且準確,但它們受限于預定義的類別,阻礙了在開放場景中的適應性。最近的開放集方法利用文本提示、視覺…

【品鉑科技工業生產應用案例解析】

品鉑科技(Pinpoint)在工業領域的高精度定位解決方案已廣泛應用于電力、鋼鐵、倉儲、化工、地鐵等場景,以下為典型應用案例及技術方案: 一、?電力行業:上海閔行電廠人員定位? 白鶴灘水力發電站 ?項目需求?&#x…

7-Zip 功能介紹

7-Zip 是一款開源、高效的文件壓縮與解壓縮工具,支持多種格式,以高壓縮率和靈活性著稱。以下是其核心功能: 多格式支持 壓縮 / 解壓:支持 7z(默認格式,壓縮率極高)、ZIP、RAR、GZIP、BZIP2、TAR…