十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
將PMDK引入PostgreSQL
持久性內(nèi)存(PMEM)具有快速、非易失和可字節(jié)訪問的特性,能夠通過load/store指令被CPU直接訪問。現(xiàn)在已有供應(yīng)商提供這種產(chǎn)品。相對于HSS或者SSD,數(shù)據(jù)庫管理系統(tǒng)跑在PMEM上性能更好。借助PMDK(Persistent Memory Development Kit),將數(shù)據(jù)庫修改成適配PMEM的產(chǎn)品,可以進一步提高其性能。本次演講的話題圍繞如何修改Postgresql使之適配PMEM,以及修改后的效果如何。我們第一步將圍繞WAL日志以及表來提升OLTP性能和checkpoint時間。
創(chuàng)新互聯(lián)服務(wù)緊隨時代發(fā)展步伐,進行技術(shù)革新和技術(shù)進步,經(jīng)過十年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實施團隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進行網(wǎng)站設(shè)計、網(wǎng)站制作、建設(shè)、維護、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
有兩種方法使用PMEM。第一種是最簡單的方法,通過直接訪問(DAX,direct-access)文件系統(tǒng),即跳過操作系統(tǒng)的頁緩存,直接訪問磁盤。這種方法不用修改PG。另一種方法:PMDK包含適配PMEM的lib庫,可以繞過內(nèi)核直接到PMEM映射文件以及跳過CPU緩存進行內(nèi)存拷貝。這種方法性能更好。
使用PMDK修改PG,主要關(guān)注WAL和表段文件。我們使用PMDK提供的PMEM函數(shù)替代系統(tǒng)調(diào)用函數(shù)open、lseek、read、write和fdatasync。然后和跑在DAX文件系統(tǒng)上的原生PG進行性能比較。試驗中,我們使用飛翼式的DIMM(NVDIMM)作為PMEM。結(jié)果顯示,在WAL方面,在INSERT場景中我們可以提升1.8倍的TPS。我們做出的修改將近1200行。對于表,我們checkpoint時可以減少將近20%的時間。
另一方面,我們也在其他方面進行探索,例如控制NUMA影響、消除SQL解析的開銷、對PMEM-mapped的固定大小表文件進行擴展。
原文地址
https://www.pgcon.org/2018/schedule/events/1154.en.html