新聞中心
技術(shù)文檔 - PostgreSQL 性能優(yōu)化之 fsync 參數(shù)
目 錄
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了貴陽免費(fèi)建站歡迎大家使用!
總 結(jié)
PostgreSQL 通過調(diào)用系統(tǒng) fsync() 或者其他使得事務(wù)內(nèi)容寫入到物理磁盤,這樣可以保證操作系統(tǒng)或者數(shù)據(jù)庫(kù)出現(xiàn)宕機(jī)后,仍然可以恢復(fù)到某一個(gè)一致性的狀態(tài)。理論上講 PostgreSQL 的 fsync 功能關(guān)閉,可以實(shí)現(xiàn)性能的提升,但是帶來的影響就是需要承擔(dān)數(shù)據(jù)的丟失,因?yàn)槌霈F(xiàn)系統(tǒng)宕機(jī)或者數(shù)據(jù)庫(kù)崩潰的時(shí)候有一些數(shù)據(jù)是沒有落盤的。
本文將驗(yàn)證 fsync 參數(shù)的性能影響,以及參數(shù)關(guān)閉時(shí)數(shù)據(jù)庫(kù)宕機(jī)后的影響。
數(shù)據(jù)量:1000W
fsync 參數(shù):on
初始化表:user_info
pgbench 壓測(cè)
pgbench 結(jié)果
pgbench 壓測(cè)
pgbench 結(jié)果
數(shù)據(jù)量:1000W
fsync 參數(shù):off
初始化表:user_info
pgbench 壓測(cè)
pgbench 結(jié)果
pgbench 壓測(cè)
pgbench 結(jié)果
通過對(duì)比發(fā)現(xiàn),將 fsync 改為 off,對(duì)于讀 TPS,參數(shù) fsync 的影響不大,對(duì)于寫 TPS,性能有一定提升。
現(xiàn)在驗(yàn)證參數(shù)關(guān)閉時(shí)數(shù)據(jù)庫(kù)宕機(jī)后的影響
首先,使用將數(shù)據(jù)庫(kù)性能跑起來
然后,模擬服務(wù)器斷電
之后,啟動(dòng)數(shù)據(jù)庫(kù)
提示信息:比致命錯(cuò)誤還過分的錯(cuò)誤。
結(jié)果:數(shù)據(jù)庫(kù)無法啟動(dòng),原因就是因?yàn)闊o法找到一個(gè)有效的 checkpoint 記錄,這就是因?yàn)?fsync 設(shè)置為 off,由于數(shù)據(jù)庫(kù)異常宕機(jī)導(dǎo)致??梢酝ㄟ^使用 pg_resetxlog 恢復(fù)數(shù)據(jù)庫(kù),但是會(huì)造成部分?jǐn)?shù)據(jù)無法找回,數(shù)據(jù)丟失;也可以通過備份恢復(fù),同樣也會(huì)丟失部分?jǐn)?shù)據(jù)。
fsync 參數(shù)對(duì)于讀 TPS 的性能影響不大,對(duì)于寫 TPS 的性能有一些影響,設(shè)置為 off,寫 TPS 性能有一定提升,但是存在數(shù)據(jù)庫(kù)宕機(jī)后無法正常啟動(dòng),即使恢復(fù)后啟動(dòng)數(shù)據(jù)庫(kù),也會(huì)有數(shù)據(jù)丟失的很大風(fēng)險(xiǎn)。因此生產(chǎn)環(huán)境非必要時(shí),不要將此參數(shù)設(shè)置為 off,還是使用默認(rèn)的 on 比較穩(wěn)妥。
2.0/2.1版本的Nutanix Era數(shù)據(jù)庫(kù)管理系統(tǒng)帶來了哪些增強(qiáng)功能?
主要有以下幾點(diǎn):第一,在 Nutanix Era數(shù)據(jù)庫(kù)管理系統(tǒng)2.0中,對(duì)跨集群和混合云的數(shù)據(jù)庫(kù)平臺(tái)功能進(jìn)行了擴(kuò)展,使客戶能夠根據(jù)自己的實(shí)際需求靈活地構(gòu)建和管理數(shù)據(jù)庫(kù),讓客戶能在需要的環(huán)境中自由地開發(fā)和部署喜歡的數(shù)據(jù)庫(kù)。
第二,在Nutanix Era數(shù)據(jù)庫(kù)管理系統(tǒng)支持的數(shù)據(jù)庫(kù)引擎列表中,除了原有的 Oracle、MS SQL Server、PostgreSQL、MySQL 和 MariaDB之外,新增加了SAP/HANA。SAP/HANA 客戶現(xiàn)在可以利用 Era的“一鍵式”功能,在 Nutanix HCI 平臺(tái)上快速創(chuàng)建一個(gè)端到端的沙盒環(huán)境。
第三,擴(kuò)大針對(duì)PostgreSQL功能選擇和技術(shù)支持:借助NutanixEra2.0,PostgreSQL管理員現(xiàn)在可以充分利用NutanixEra數(shù)據(jù)庫(kù)管理系統(tǒng)的所有功能,包括補(bǔ)丁維護(hù)和就地還原等。此外,從現(xiàn)在起,Nutanix還為通過Era配置的PostgreSQL數(shù)據(jù)庫(kù)提供了7×24技術(shù)支持服務(wù),客戶有任何問題都可隨時(shí)撥打我們的支持電話。
第四,對(duì)于那些追求全面托管型數(shù)據(jù)庫(kù)服務(wù)的客戶,Nutanix 與全球技術(shù)公司 HCL 合作,提供由 HCL 和 Nutanix 合作推出的名為 SKALE DB 的聯(lián)合解決方案。雙方的合作為客戶帶來了一款安全、可擴(kuò)展、適合云的托管數(shù)據(jù)庫(kù)即服務(wù)(DBaaS)產(chǎn)品,該產(chǎn)品集成了 Nutanix Era 和 Prism,用于數(shù)據(jù)庫(kù)和超融合基礎(chǔ)架構(gòu)的自動(dòng)化和管理。
第五,Nutanix Era數(shù)據(jù)庫(kù)即服務(wù)時(shí)間機(jī)器支持跨多個(gè) Nutanix 群集的日志復(fù)制。復(fù)制的日志用于跨多個(gè) Nutanix 群集創(chuàng)建和刷新基于時(shí)間點(diǎn)的數(shù)據(jù)庫(kù)克隆。
總之,Nutanix Era 2.0/2.1對(duì)于這些功能的增強(qiáng),將大大提高數(shù)據(jù)庫(kù)管理水平和管理效率。
postgreSQL數(shù)據(jù)庫(kù)有什么用?。?/h2>
優(yōu)點(diǎn)事實(shí)上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的數(shù)據(jù)類型的支持,其中有些數(shù)據(jù)類型可以說連商業(yè)數(shù)據(jù)庫(kù)都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟件數(shù)據(jù)庫(kù),很長(zhǎng)時(shí)間以來,PostgreSQL 是唯一支持事務(wù)、子查詢、多版本并行控制系統(tǒng)、數(shù)據(jù)完整性檢查等特性的唯一的一種自由軟件的數(shù)據(jù)庫(kù)管理系統(tǒng)。直到最近才有 Inprise 的 InterBase 以及 SAP 等廠商將其原先專有軟件開放為自由軟件之后才打破了這個(gè)唯一。最后,PostgreSQL擁有一支非?;钴S的開發(fā)隊(duì)伍,而且在許多黑客的努力下,PostgreSQL 的質(zhì)量日益提高。
從技術(shù)角度來講,PostgreSQL 采用的是比較經(jīng)典的 C/S (client/server)結(jié)構(gòu),也就是一個(gè)客戶端對(duì)應(yīng)一個(gè)服務(wù)器端守護(hù)進(jìn)程的模式,這個(gè)守護(hù)進(jìn)程分析客戶端來的查詢請(qǐng)求,生成規(guī)劃樹,進(jìn)行數(shù)據(jù)檢索并最終把結(jié)果格式化輸出后返回給客戶端。為了便于客戶端的程序的編寫,由數(shù)據(jù)庫(kù)服務(wù)器提供了統(tǒng)一的客戶端 C 接口。而不同的客戶端接口都是源自這個(gè) C 接口,比如 ODBC,JDBC,Python,Perl ,Tcl,C/C++,ESQL 等, 同時(shí)也要指出的是,PostgreSQL 對(duì)接口的支持也是非常豐富的,幾乎支持所有類型的數(shù)據(jù)庫(kù)客戶端接口。這一點(diǎn)也可以說是 PostgreSQL 一大優(yōu)點(diǎn)。
缺點(diǎn)
從 Postgres 開始,PostgreSQL 就經(jīng)受了多次變化。
首先,早期的 PostgreSQL 繼承了幾乎所有 Ingres, Postgres, Postgres95 的問題:過于學(xué)院味,因?yàn)槭紫人哪康氖菙?shù)據(jù)庫(kù)研究,因此不論在穩(wěn)定性, 性能還是使用方便方面,長(zhǎng)期以來一直沒有得到重視,直到 PostgreSQL 項(xiàng)目開始以后,情況才越來越好,目前,PostgreSQL 已經(jīng)完全可以勝任任何中上規(guī)模范圍內(nèi)的應(yīng)用范圍的業(yè)務(wù)。目前有報(bào)道的生產(chǎn)數(shù)據(jù)庫(kù)的大小已經(jīng)有 TB 級(jí)的數(shù)據(jù)量,已經(jīng)逼近 32 位計(jì)算的極限。不過學(xué)院味也給 PostgreSQL 帶來一個(gè)意想不到的好處:大概因?yàn)楦鞔髮W(xué)的軟硬件環(huán)境差異太大的緣故,它是目前支持平臺(tái)最多的數(shù)據(jù)庫(kù)管理系統(tǒng)的一種,所支持的平臺(tái)多達(dá)十幾種,包括不同的系統(tǒng),不同的硬件體系。至今,它仍然保持著支持平臺(tái)最多的數(shù)據(jù)庫(kù)管理系統(tǒng)的稱號(hào)。
其次,PostgreSQL 的確還欠缺一些比較高端的數(shù)據(jù)庫(kù)管理系統(tǒng)需要的特性,比如數(shù)據(jù)庫(kù)集群,更優(yōu)良的管理工具和更加自動(dòng)化的系統(tǒng)優(yōu)化功能 等提高數(shù)據(jù)庫(kù)性能的機(jī)制等。
三分鐘!徹底搞懂PostgreSQL 和 MySQL 區(qū)別之分
PostgreSQL 和 MySQL 是將數(shù)據(jù)組織成表的關(guān)系數(shù)據(jù)庫(kù)。這些表可以根據(jù)每個(gè)表共有的數(shù)據(jù)鏈接或關(guān)聯(lián)。關(guān)系數(shù)據(jù)庫(kù)使您的企業(yè)能夠更好地了解可用數(shù)據(jù)之間的關(guān)系,并幫助獲得新的見解以做出更好的決策或發(fā)現(xiàn)新的機(jī)會(huì)。
PostgreSQL 和 MySQL 都依賴于 SQL(結(jié)構(gòu)化查詢語言),這是與管理系統(tǒng)交互的標(biāo)準(zhǔn)語言。SQL 允許使用具有簡(jiǎn)單結(jié)構(gòu)的幾行源代碼連接表,大多數(shù)非技術(shù)員工可以快速學(xué)習(xí)。
使用 SQL,分析師不需要知道訂單表在磁盤上的位置、如何執(zhí)行查找以查找特定訂單或如何連接訂單表和客戶表。數(shù)據(jù)庫(kù)編譯查詢并計(jì)算出正確的數(shù)據(jù)點(diǎn)。
MySQL 和 PostgreSQL 都支持 JavaScript Object Notation (JSON) 存儲(chǔ)和傳輸數(shù)據(jù),盡管 PostgreSQL 也支持 JSONB,這是 JSON 的二進(jìn)制版本,它消除了鍵的重復(fù)和無關(guān)的空格。
除了傳統(tǒng)的支持機(jī)制外,這兩個(gè)數(shù)據(jù)庫(kù)都提供強(qiáng)大的社區(qū)支持。
PostgreSQL,也稱為 Postgres,是一種開源關(guān)系數(shù)據(jù)庫(kù),因其可靠性、靈活性和對(duì)開放技術(shù)標(biāo)準(zhǔn)的支持而享有盛譽(yù)。PostgreSQL 支持非關(guān)系和關(guān)系數(shù)據(jù)類型。它被稱為當(dāng)今可用的最兼容、最穩(wěn)定和最成熟的關(guān)系數(shù)據(jù)庫(kù)之一,并且可以輕松處理復(fù)雜的查詢。
PostgreSQL 的特性包括:
PostgreSQL 這是一個(gè)“一刀切”的解決方案,適用于許多尋求經(jīng)濟(jì)高效的方法來改進(jìn)其數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS) 的企業(yè)。它具有足夠的可擴(kuò)展性和多功能性,可以通過強(qiáng)大的擴(kuò)展生態(tài)系統(tǒng)快速支持各種專業(yè)用例,涵蓋時(shí)間序列數(shù)據(jù)類型和地理空間分析等工作。作為開源數(shù)據(jù)庫(kù)解決方案構(gòu)建的 PostgreSQL 完全不受許可限制、供應(yīng)商鎖定的可能性或過度部署的風(fēng)險(xiǎn)。PostgreSQL 通過對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (ORDBMS) 進(jìn)行管理。
PostgreSQL 負(fù)責(zé)管理業(yè)務(wù)活動(dòng)的在線事務(wù)處理 (OLTP)協(xié)議的企業(yè)數(shù)據(jù)庫(kù)管理員提供了理想的解決方案,包括電子商務(wù)、客戶關(guān)系管理系統(tǒng) (CRM) 和財(cái)務(wù)分類帳。它也是管理接收、創(chuàng)建和生成的數(shù)據(jù)分析的理想選擇。
這些是 PostgreSQL 的一些主要優(yōu)點(diǎn):
MySQL — 一種快速、可靠、可擴(kuò)展且易于使用的開源關(guān)系數(shù)據(jù)庫(kù)系統(tǒng) — 旨在處理關(guān)鍵任務(wù)、高負(fù)載的生產(chǎn)應(yīng)用程序。它是一種常見且易于啟動(dòng)的數(shù)據(jù)庫(kù),內(nèi)存、磁盤和 CPU 利用率較低,有關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng) (RDMS) 管理。MySQL Community Edition 是一個(gè)由活躍的在線社區(qū)支持的免費(fèi)下載版本。
MySQL 功能包括所有 SQL 標(biāo)準(zhǔn)命令以及事務(wù)和 ACID 合規(guī)性(代表原子性、一致性、隔離性和持久性)。
兩個(gè)最常見的關(guān)系數(shù)據(jù)庫(kù)是什么 MySQL 和 Oracle。MySQL 不是 SQL Server 的同義詞,SQL Server 是 Microsoft 許可產(chǎn)品,與 MAC OS X 缺乏兼容性。
MariaDB 經(jīng)常與 MySQL 混淆,它是 MySQL 的一個(gè)開源分支,速度更快,提供更多存儲(chǔ)引擎 (12),但功能有限。MySQL 和 MariaDB 使用的存儲(chǔ)引擎都是 InnoDB。InnoDB 提供標(biāo)準(zhǔn)的 ACID 兼容特性。與 MySQL 不同,MariaDB 不支持?jǐn)?shù)據(jù)屏蔽或動(dòng)態(tài)列表。
MySQL 通常用作 Web 數(shù)據(jù)庫(kù)來存儲(chǔ)各種信息類型,從單個(gè)信息數(shù)據(jù)點(diǎn)到為組織提供的產(chǎn)品或服務(wù)的完整列表。它是LAMP(Linux 操作系統(tǒng)、Apache HTTP 服務(wù)器、MySQL RDBMS 和 PHP 編程語言)的基礎(chǔ)組件,這是一種有助于創(chuàng)建API、Web 應(yīng)用程序和網(wǎng)站的軟件堆棧模型。
MySQL Workbench 是一個(gè)單一的、集成的可視化 SQL 平臺(tái),用于 MySQL 數(shù)據(jù)庫(kù)的創(chuàng)建、開發(fā)、設(shè)計(jì)和管理。
MySQL 為市場(chǎng)提供了許多好處,包括:
PostgreSQL 和 MySQL 之間有很多不同之處。特性、功能和優(yōu)勢(shì)方面的一些差異如下:
總之,PostgreSQL 和 MySQL 都有不同的用途,它們之間的選擇取決于企業(yè)目標(biāo)和資源。一般來說,PostgreSQL 是一個(gè)更強(qiáng)大、更高級(jí)的數(shù)據(jù)庫(kù)管理系統(tǒng),非常適合需要在大型環(huán)境中快速執(zhí)行復(fù)雜查詢的組織。但是,對(duì)于預(yù)算和空間更受限制的公司來說,MySQL 是一個(gè)理想的解決方案。
PostgreSQL開源免費(fèi)企業(yè)級(jí)數(shù)據(jù)庫(kù)用著比較爽的地方有哪些?
1),PostgreSQL是通用型數(shù)據(jù)庫(kù)。
PG有著豐富的數(shù)據(jù)類型(數(shù)值、字符、時(shí)間、布爾、貨幣、枚舉、網(wǎng)絡(luò)地址、JSONB等等)和索引類型( B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN等 )。可以存儲(chǔ)和計(jì)算大多數(shù)場(chǎng)景的業(yè)務(wù)數(shù)據(jù),如 ERP、交易系統(tǒng)、財(cái)務(wù)系統(tǒng)涉及資金、客戶等信息,數(shù)據(jù)不能丟失且業(yè)務(wù)邏輯復(fù)雜,選擇 PostgreSQL 作為數(shù)據(jù)底層存儲(chǔ),一是可以幫助您在數(shù)據(jù)一致性前提下提供高可用性,二是可以用簡(jiǎn)單的編程實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯 。適合各種OLTP和部分OLAP場(chǎng)景。
2),PostgreSQL數(shù)據(jù)庫(kù)包含許多第三方插件。
如PostGIS等可以直接在數(shù)據(jù)庫(kù)里進(jìn)行地理位置相關(guān)的gis類存儲(chǔ)和運(yùn)算(LBS地理位置相關(guān)業(yè)務(wù)等O2O場(chǎng)景),其他的插件如Pg_stat_statements、uuid-ossp、pg_trgm、btree-gist插件、 pgcrypto加密等插件 。
3),中小型企業(yè)快速搭建 數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)分析平臺(tái)(TB級(jí)別)
PostgreSQL 提供豐富的數(shù)據(jù)類型和強(qiáng)大的計(jì)算能力,能夠幫助您更簡(jiǎn)單搭建數(shù)據(jù)庫(kù)倉(cāng)庫(kù)或大數(shù)據(jù)分析平臺(tái),為企業(yè)運(yùn)營(yíng)加分。
4),冷熱分離
針對(duì)流水類的大表,PG可以使用分區(qū)表,線上保留熱數(shù)據(jù), 歷史 數(shù)據(jù)存放在分區(qū)表里或者OSS等冷數(shù)據(jù)平臺(tái),冷熱分離。
5),公有云支持度高如阿里云、騰訊云、華為云等公有云都有對(duì)應(yīng)的RDS-PG產(chǎn)品,開箱即用,并提供技術(shù)支持。
OLTP:事務(wù)處理是PostgreSQL的本行
OLAP:ANSI SQL兼容,窗口函數(shù),CTE,CUBE等高級(jí)分析功能,任意語言寫UDF,citus分布式插件
流處理:PipelineDB擴(kuò)展,Notify-Listen,物化視圖,規(guī)則系統(tǒng),靈活的存儲(chǔ)過程與函數(shù)編寫
時(shí)序數(shù)據(jù):timescaledb時(shí)序數(shù)據(jù)庫(kù)插件,分區(qū)表,BRIN索引
空間數(shù)據(jù):PostGIS擴(kuò)展(殺手锏),內(nèi)建的幾何類型支持,GiST索引。
搜索索引:全文搜索索引足以應(yīng)對(duì)簡(jiǎn)單場(chǎng)景;豐富的索引類型,支持函數(shù)索引,條件索引
NoSQL:JSON,JSONB,XML,HStore原生支持,至NoSQL數(shù)據(jù)庫(kù)的外部數(shù)據(jù)包裝器
數(shù)據(jù)倉(cāng)庫(kù):能平滑遷移至同屬Pg生態(tài)的GreenPlum,DeepGreen,HAWK等,使用FDW進(jìn)行ETL
為什么 PostgreSQL 在國(guó)內(nèi)流行度遠(yuǎn)不如 MySQL,主要是哪些方面的原因造成的?
PostgreSQL技術(shù)社區(qū)存在問題,在社區(qū)中他們很快就回答了問題,但在一些設(shè)計(jì)問題上,核心員工很頑固尤其是對(duì)當(dāng)前的社區(qū)版本,即使有一個(gè)明顯的錯(cuò)誤,也不愿承認(rèn)。
它的學(xué)院派味道太濃,對(duì)很多商業(yè)上的考慮比較少。例如使用神經(jīng)遺傳算法解決幾千個(gè)表連接時(shí)的連接順序問題;這種問題商業(yè)界可能不會(huì)有人這么干。而像商業(yè)應(yīng)用必須考慮到index生成問題:一個(gè)應(yīng)用不斷在訪問數(shù)據(jù)庫(kù)時(shí),運(yùn)行 create index concurrently 居然會(huì)一直等待。而且死活不會(huì)被承認(rèn)為bug。
我認(rèn)為MySQL能夠流行起來,一定有它的道理。而PostgreSQL出現(xiàn)很多年了,甚至可以說和Ingres/DBase/CA DB/Sybase SQL Server都有淵源,但是沒能流行也一定有它的原因,主要還是沒有貼近商業(yè)界吧。
mysql用的人多,但mysql有它的局限性,一般在mysql上碰到釘子了才會(huì)考慮postgres,但問題是mysql能適用于絕大部分互聯(lián)網(wǎng)項(xiàng)目。postgres也在慢慢流行起來了,畢竟它的優(yōu)勢(shì)在那里——對(duì)事務(wù)的良好支持,并發(fā)良好的支持,以及復(fù)雜查詢的優(yōu)化能力。這對(duì)于很多對(duì)一致性要求高的復(fù)雜系統(tǒng)都是很有必要的。
分享文章:包含postgresql技術(shù)的詞條
文章分享:http://fisionsoft.com.cn/article/dsccoic.html