国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯
        加入自媒體

        PG:checkpoint是什么?該如何寫數據?

        2021-03-05 09:13
        yzsDBA
        關注

        PG:checkpoint是什么

        Checkpoint是PG中的核心概念。然而會有用戶對此比較陌生,不知道如何調優。本文解釋checkpoint及如何調優,希望對數據庫內核理解有所幫助。

        PG如何寫數據

        詳細討論checkpoint前,理解PG是如何write數據的非常重要,看下面的圖:

        重要的假設是crash會發生在任何時間。為什么和這個相關?需要確認數據庫永遠不會被破壞。我們不能直接將數據寫入數據文件。為甚?假設要將“1234”寫入數據文件,如果在“12”后面崩潰,結果將是表中某個位置的一個元組被破壞,索引條目可能丟失等。我們必須不惜一切代價防止這種情況發生。

        因此需要更加復雜的數據寫入方法。PG首先將數據寫入WAL,WAL就像一個包含二進制變化的順序磁帶。如果添加一行,WAL可能包含一條記錄,用于記錄數據文件哪些地方改動了,可能包含一組索引記錄改動的指令、可能需要寫入一個額外的頁等,僅包含一系列變化。

        數據一旦寫入WAL,PG將會對共享緩存區中的數據頁進行更改,注意數據文件中仍沒有數據,F在有了WAL條目及共享緩沖區的臟頁。如果一個讀取請求來了,可從緩存中找到,而不用到磁盤上讀取。

        某個時刻,內存中的臟頁會由后臺寫入進程寫入磁盤。這里最重要的一點是,數據可能會被亂序寫入,這個是沒有問題的。如果用戶想讀取數據,PG先從共享緩沖區中獲取。因此臟頁的寫入順序與此無關。甚至可以晚一點寫入,以增加一次sync的量。

        刪除WAL

        WAL不能無限寫入,需要回收空間。這就是CHECKPOINT需要干的活之一。

        Checkpoint的目的就是確保臟頁刷寫到磁盤,然后該臟頁對應的WAL及之前的WAL就可以刪除回收了。PG的方法啟動一個checkpoint進程,將bgwriter進程沒有刷寫的刷寫到磁盤。但是這個過程并沒有盡可能快的刷,我們需要使IO平穩,保證穩定的響應時間。

        控制checkpoint平穩的參數為:

        test=# SHOW checkpoint_completion_target;checkpoint_completion_target------------------------------0.5(1 row)

        到下個checkpoint開始前完成刷寫一半。真實情況下對于大多數負載0.7-0.9就可以了,但可以隨意設置。注意PG14中這個參數就會取消了,硬編碼值為0.9。下一個問題是:什么時候進行checkpoint呢?參數為:

        test=# SHOW checkpoint_timeout;checkpoint_timeout--------------------5min(1 row)test=# SHOW max_wal_size;max_wal_size--------------1GB(1 row)

        如果系統的負載比較低,在一段時間后進行checkpoint。默認值是5分鐘,但建議增加這個值以提高寫入性能。注意,請隨意修改這個值,僅會影響性能,不會以任何方式傷害數據庫,除了性能沒有數據會有風險。

        max_wal_size有點棘手,這個是個軟限制,不是硬限制。因此WAL會超過這個值。這個值為了告訴PG可以堆積多少WAL,從而挑戰checkpoint,F實中,提高這個值會消耗更多空間,但是會提高性能。

        為啥不將max_wal_size設置成無限大呢?首先很明顯,這樣就需要更多空間。另外,一旦數據庫崩潰,PG就需要從上個checkpoint處開始回放,這樣回放的時間就非常長了。如果檢查點的距離增加,性能確實會提升,但是所做的和想要達到的效果有限,從某種意義上說,在這個問題上投入更多存儲空間不會改變任何事情。

        后臺寫進程會將臟頁刷寫到磁盤,然而許多情況下,更多工作是由checkpoint進程本身完成,因此關注checkpoint比后臺寫進程有意義。

        min_wal_size:神秘參數

        min_wal_size 和max_wal_size有什么區別呢?如果PG空閑,會逐漸將WAL量減少到min_wal_size,這是個緩慢的過程,不是立即一蹴而就。假設本周內有高寫負載,但是在周末會空閑。禮拜五下午,WAL量會很多,但是周末,會漸漸減少。當到周一后,WAL量又會增加。

        因此最后將min_wal_size的值設置的不要太小。


        聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

        發表評論

        0條評論,0人參與

        請輸入評論內容...

        請輸入評論/評論長度6~500個字

        您提交的評論過于頻繁,請輸入驗證碼繼續

        暫無評論

        暫無評論

          人工智能 獵頭職位 更多
          掃碼關注公眾號
          OFweek人工智能網
          獲取更多精彩內容
          文章糾錯
          x
          *文字標題:
          *糾錯內容:
          聯系郵箱:
          *驗 證 碼:

          粵公網安備 44030502002758號

          主站蜘蛛池模板: 久久婷婷五月天| 上海旅游集散中心网上订票| 激情图区| 超碰人人在线| 看片总站| 久久精品99久久久久久久久| 免费AV观看| 天堂a?中文在线| 久草视频观看| 国产v片中文字幕| 普定县| 熟女国产在线| 遂昌县| 亚洲五月婷婷| 亚洲都市激情| AV亚洲?电影AV?AV天堂| 探花AV| 读书| 亚洲人妻av| 中文字幕在线高清| 若尔盖县| AV资源站| AV免费网站| 亚洲欲妇| 亚洲国产精品羞羞| 99在线免费观看| 婷婷综合色| 中文字幕亚洲在线观看| 青青久草| 日本成人有码| 天天干夜夜撸| 久色88| 亚洲乱码中文字幕| 一区二区免费| 性欧美高清| 国产亚洲成人网站| 亚洲男人天堂网| 镇远县| 欧美一二三区| 日韩偷拍五月| 亚洲激情偷拍|