原创 資訊--Aerospike 4.5支持持久內存

Aerospike 4.5:PM和壓縮 正文 Aerospike企業版4.5是第一個商用的支持Intel® Optane™ DC持久內存(基於Intel的3DXPoint)的數據庫。Aerospike open database架構意思是

原创 PMDK vs mmap/memcpy

PMDK進行創建文件時調用函數pmem_map_file,而這個函數底層調用mmap,那麼這個PMDK和操作系統函數調用有何不同呢? 內容 Libpmem的pmem_map_file()支持2M/1G(大頁大小)對齊方式,這樣能夠減少頁故

原创 同步複製注意點

       同步複製情況下,先刷寫日誌,然後記錄clog並持久化,最後纔等待備機接收日誌後返回的ACK,如果備機有問題的話或複製鏈路異常,日誌傳輸失敗,此時用戶客戶端的commit會掛住,一旦主機異常宕機重啓後,這個異常的事務會從日誌

原创 PostgreSQL異常重啓postmaster.pid處理

本文介紹啓動時pid文件即鎖文件的處理。若異常宕機,導致pid文件殘留,那麼重啓時會自動將這個文件刪除嗎?main>PostmasterMain->CreateDataDirLockFile->CreateLockFile:: fo

原创 PostgreSQL表掃描方法解析

本文介紹PG的表掃描方法原理。 全表掃描函數在heap handler API接口函數爲heap_getnextslot函數。該函數從磁盤讀取數據頁到內存並遍歷頁內記錄,將其存儲到slot中返回用戶。這個函數一次只獲取一個記錄,倒到上次E

原创 PostgreSQL DDL操作解析

本文介紹PG DDL操作上層接口。 1、DDL操作的入口函數是ExecModifyTable,insert、delete、update都會進入這個函數,如果爲insert,執行ExecProcNode的時候不會調用掃描函數execSe

原创 PostgreSQL VACUUM可見性

分兩種情況,一是XMIN事務未提交,一個是xmin事務已提交。 針對xmin未提交的事務,即當前的tuple剛insert還未提交: 1)元組不合法,即壞元組時,返回HEAPTUPLE_DEAD 2)該tuple是當前事務產生的:此時這

原创 PostgreSQL MVCC可見性判斷

1、知識準備 1)Tuple格式頭HeapTupleHeaderData typedef struct HeapTupleFields{ TransactionId t_xmin;   /* inserting xact ID

原创 PostgreSQL的insert解析

其insert由函數heapam_tuple_insert完成。 1、首先需要從slot中取出tuple值,HeapTupleTableSlot.tuple 2、從relation中得到該記錄即將插入表的OID:relation->rd

原创 PostgreSQL文件擴展機制

       擴展的底層函數爲mdextend。先通過_mdfd_getseg獲取指定頁號的段文件描述符,然後根據頁號計算出偏移,向該偏移出寫入一頁:大部分情況寫入一頁0來進行擴展。        _mdfd_getseg獲取頁號所在

原创 非易失性內存技術及數據庫

  非易失性內存技術及數據庫 內容 “2013年開始這個項目的研究,當時不確定非易失性內存技術是否可商用。2019年Intel商用了NVM產品,NVM對下一代數據庫系統的影響吸引了廣大研究者”--Joy Arulraj和Andrew Pa

原创 WAL文件回收

    checkpoint執行大致分爲四步:1)刷寫髒頁,即將整個share buffer的所有髒頁都刷盤;2)生成checkpoint wal記錄,並插入WAL BUFFER;3)將checkpoint前的所有wal全部刷盤;4)回

原创 非易失性數據庫系統存儲與恢復方法

非易失性數據庫系統存儲與恢復方法 摘要 非易失性內存的出現從根本上改變了數據庫管理系統的內存和持久存儲的架構。這些新型NVM設備具有堪比DRAM的速度,但是寫到NVM設備後這些數據就具備了持久性。因爲現現有的數據庫管理系統基於內存是易失的

原创 資訊-Aerospike4.5支持持久內存

Aerospike 4.5:PM和壓縮正文Aerospike企業版4.5是第一個商用的支持Intel® Optane™ DC持久內存(基於Intel的3DXPoint)的數據庫。Aerospike open database架構意思是: