濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > postgresql synchronous_commit參數(shù)的用法介紹

postgresql synchronous_commit參數(shù)的用法介紹

熱門(mén)標(biāo)簽:海豐有多少商家沒(méi)有地圖標(biāo)注 重慶自動(dòng)外呼系統(tǒng)定制 漯河外呼電話(huà)系統(tǒng) 地圖標(biāo)注和圖片名稱(chēng)的區(qū)別 美容工作室地圖標(biāo)注 合肥公司外呼系統(tǒng)運(yùn)營(yíng)商 打電話(huà)智能電銷(xiāo)機(jī)器人授權(quán) 辦公外呼電話(huà)系統(tǒng) 外呼調(diào)研系統(tǒng)

synchronous_commit

指定在命令返回”success”指示給客戶(hù)端之前,一個(gè)事務(wù)是否需要等待 WAL 記錄被寫(xiě)入磁盤(pán)。

合法的值是{local,remote_write,remote_apply,on,off}

默認(rèn)的并且安全的設(shè)置是on。

不同于fsync,將這個(gè)參數(shù)設(shè)置為off不會(huì)產(chǎn)生數(shù)據(jù)庫(kù)不一致性的風(fēng)險(xiǎn):一個(gè)操作系統(tǒng)或數(shù)據(jù)庫(kù)崩潰可能會(huì)造成一些最近據(jù)說(shuō)已提交的事務(wù)丟失,但數(shù)據(jù)庫(kù)狀態(tài)是一致的,就像這些事務(wù)已經(jīng)被干凈地中止。因此,當(dāng)性能比完全確保事務(wù)的持久性更重要時(shí),關(guān)閉synchronous_commit可以作為一個(gè)有效的代替手段。

這個(gè)參數(shù)可以隨時(shí)被修改;任何一個(gè)事務(wù)的行為由其提交時(shí)生效的設(shè)置決定。因此,可以同步提交一些事務(wù),同時(shí)異步提交其他事務(wù)。例如,當(dāng)默認(rèn)是相反時(shí),實(shí)現(xiàn)一個(gè)單一多語(yǔ)句事務(wù)的異步提交,在事務(wù)中發(fā)出SET LOCAL synchronous_commit TO OFF。

單實(shí)例環(huán)境

on:

當(dāng)數(shù)據(jù)庫(kù)提交事務(wù)時(shí),wal先寫(xiě)入 wal buffer 再寫(xiě)入 wal 日志文件,設(shè)置成on表示提交事務(wù)時(shí)需等待本地wal寫(xiě)入wal日志后才向客戶(hù)端返回成功。

on 為默認(rèn)設(shè)置,數(shù)據(jù)庫(kù)非常安全,但性能有所損耗。

off:

當(dāng)數(shù)據(jù)庫(kù)提交事務(wù)時(shí)不需要等待本地 wal buffer 寫(xiě)入 wal 日志,隨即向客戶(hù)端返回成功,設(shè)置成off會(huì)給數(shù)據(jù)庫(kù)帶來(lái)一點(diǎn)風(fēng)險(xiǎn):數(shù)據(jù)庫(kù)宕機(jī)時(shí)最新提交的少量事務(wù)可能丟失,數(shù)據(jù)庫(kù)重啟后會(huì)認(rèn)為這些事務(wù)異常終止,會(huì)rollback。

適用對(duì)數(shù)據(jù)庫(kù)準(zhǔn)確性要求不高同時(shí)追求數(shù)據(jù)庫(kù)性能的的場(chǎng)景。

local:

local含義和on類(lèi)似,表示提交事務(wù)時(shí)需要等待本地wal寫(xiě)入后才向客戶(hù)端返回成功。

流復(fù)制環(huán)境

on:

表示流復(fù)制主庫(kù)提交事務(wù)時(shí),需等待備庫(kù)接收主庫(kù)發(fā)送的wal日志流并寫(xiě)入wal文件,之后才向客戶(hù)端返回成功,簡(jiǎn)單的說(shuō)on表示本地wal已落盤(pán),備庫(kù)的wal也已落盤(pán),有兩份持久化的wal,但備庫(kù)此時(shí)還沒(méi)有完成重做。

這個(gè)選項(xiàng)帶來(lái)的事務(wù)響應(yīng)時(shí)間較高。

remote_write:

表示流復(fù)制主庫(kù)提交事務(wù)時(shí),需等待備庫(kù)接收主庫(kù)發(fā)送的wal日志流并寫(xiě)入備節(jié)點(diǎn)操作系統(tǒng)緩存中,之后向客戶(hù)端返回成功,這種情況下備庫(kù)出現(xiàn)異常關(guān)閉時(shí)不會(huì)有已傳送的wal日志丟失風(fēng)險(xiǎn),但備庫(kù)操作系統(tǒng)異常宕機(jī)就有已傳送的wal丟失風(fēng)險(xiǎn)了,此時(shí)wal可能還沒(méi)有完全寫(xiě)入備節(jié)點(diǎn)wal文件中,簡(jiǎn)單的說(shuō) remote_write 表示本地wal已落盤(pán),備庫(kù)的wal還在備庫(kù)操作系統(tǒng)緩存中,也就是說(shuō)只有一份持久化的wal。

這個(gè)選項(xiàng)帶來(lái)的事務(wù)響應(yīng)時(shí)間較低。

remote_apply:

表示流復(fù)制主庫(kù)提交事務(wù)時(shí),需等待備庫(kù)接收主庫(kù)發(fā)送的wal流并寫(xiě)入wal文件,同時(shí)備庫(kù)已經(jīng)完成重做,之后才向客戶(hù)端返回成功,簡(jiǎn)單的說(shuō)remote_apply 表示本地wal已落盤(pán),備庫(kù)wal已落盤(pán)并且已經(jīng)完成重做,這個(gè)設(shè)置保證了擁有兩份持久化的wal,同時(shí)備庫(kù)也已經(jīng)完成了重做。

這個(gè)選項(xiàng)帶來(lái)的事務(wù)響應(yīng)時(shí)間最高。

補(bǔ)充:postgresql wal日志部分參數(shù)

fsync

fsync :控制wal日志刷新是否開(kāi)啟刷新到磁盤(pán),此參數(shù)控制wal_sync_method參數(shù)的刷新方法,如果fsync為off,則wal_sync_method的方法是沒(méi)有意義的,

如果沒(méi)開(kāi)啟這個(gè)參數(shù),則可能由于wal日志塊沒(méi)有刷新到磁盤(pán)永久存儲(chǔ)而導(dǎo)致故障發(fā)生后實(shí)例出現(xiàn)塊折斷(oracle稱(chēng)其為block curruption)

wal_sync_method

wal_sync_method :wal日志刷新方法,可選值為open_datasync/fdatasync/fsync/fsync_writethrough/open_sync

linux系統(tǒng)默認(rèn)為fdatasync,以open開(kāi)頭的在某些系統(tǒng)上不支持

wal_buffers

wal_buffers :wal緩沖區(qū),默認(rèn)為-1,大小為1/32的shared_buffer,最小不少于64k,最大不大于一個(gè)wal_segment(默認(rèn)16M大小),一般保持默認(rèn)即可,因?yàn)檫^(guò)了wal_writer_delay(默認(rèn)200ms)總會(huì)刷新清空此緩存,設(shè)置太大了也用不上.

wal_writer_delay

wal_writer_delay:前面已經(jīng)說(shuō)過(guò),這有點(diǎn)類(lèi)似oracle和mysql的1s定時(shí)寫(xiě)日志策略,每隔這么長(zhǎng)時(shí)間就會(huì)刷wal日志緩沖區(qū)的數(shù)據(jù),然后sleep,到點(diǎn)后再刷,如此循環(huán)往復(fù).

commit_delay

commit_delay :提交的延遲時(shí)間,如果設(shè)置了此參數(shù),則會(huì)commit后延遲一段時(shí)間再進(jìn)行提交,此機(jī)制可以合并其他事務(wù)進(jìn)而一起進(jìn)行組提交,不過(guò)合并的事務(wù)數(shù)是有限制的,要至少有commit_siblings參數(shù)個(gè)事務(wù)等待提交的時(shí)候才會(huì)延遲,所有當(dāng)有大量事務(wù)的時(shí)候會(huì)延遲,而如果事務(wù)很稀少就不會(huì)再被延遲了.

commit_siblings

commit_siblings :組提交個(gè)數(shù)的最少個(gè)數(shù),此參數(shù)上面已經(jīng)進(jìn)行說(shuō)明

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • postgresql 中的參數(shù)查看和修改方式
  • postgresql 性能參數(shù)配置方式
  • 基于PostgreSQL pg_hba.conf 配置參數(shù)的使用說(shuō)明
  • PostgreSQL流復(fù)制參數(shù)max_wal_senders的用法說(shuō)明
  • postgresql中wal_level的三個(gè)參數(shù)用法說(shuō)明
  • postgresql 中的幾個(gè) timeout參數(shù) 用法說(shuō)明

標(biāo)簽:珠海 蚌埠 株洲 衡陽(yáng) 來(lái)賓 晉城 錦州 烏海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《postgresql synchronous_commit參數(shù)的用法介紹》,本文關(guān)鍵詞  postgresql,synchronous,commit,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《postgresql synchronous_commit參數(shù)的用法介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于postgresql synchronous_commit參數(shù)的用法介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    渝北区| 射洪县| 淮北市| 绥芬河市| 北宁市| 通许县| 孙吴县| 二手房| 宜川县| 茶陵县| 南涧| 兴安县| 灯塔市| 封开县| 宜川县| 怀来县| 广丰县| 元谋县| 阿合奇县| 颍上县| 自治县| 大竹县| 平凉市| 南皮县| 论坛| 石屏县| 广宗县| 宾川县| 恩平市| 信宜市| 木兰县| 华宁县| 焦作市| 临汾市| 彝良县| 磐安县| 合山市| 天等县| 温宿县| 科技| 乐亭县|