亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

PostgreSQL 企業(yè)級能力:新增文件回滾自動清除

maoxiaoming
2025年8月19日 10:21 本文熱度 1089

崩潰恢復(fù)場景: 用例

下面我們在 PostgreSQL 的數(shù)據(jù)庫中,創(chuàng)建一個表,插入一些數(shù)據(jù)。

CREATE TABLE t (id integername text);

INSERT INTO t (id, name)
  SELECT i, repeat('Pg'32)
    FROM generate_series(11000000AS s(i);

下面我們啟動一個事務(wù)塊,創(chuàng)建一個空表t1,復(fù)制表t創(chuàng)建一個新表t_copy,并查看下表文件的存儲路徑。

BEGIN;

CREATE TABLE t1 ();

CREATE TABLE t_copy AS TABLE t;

SELECT pg_relation_filepath(nameAS path
  FROM (VALUES ('t1'), ('t_copy')) AS t (name);
     path
--------------
 base/5/16389
 base/5/16392

讓我們立即停止數(shù)據(jù)庫,模擬數(shù)據(jù)庫異常宕機的故障,再重新啟動數(shù)據(jù)庫服務(wù):

pg_ctl stop --mode=immediate
pg_ctl start

數(shù)據(jù)庫重新啟動后,手動觸發(fā)一次檢查點:

CHECKPOINT;

檢查重啟前事務(wù)塊中新增的表文件:

ls -lh base/5/{16389,16392}
-rw------- 1 postgres postgres   0 Aug 18 17:43 base/5/16389
-rw------- 1 postgres postgres 97M Aug 18 17:44 base/5/16392

崩潰恢復(fù)場景: 內(nèi)部原理

下面是我們在 PostgreSQL 的事務(wù)中創(chuàng)建表文件時,崩潰恢復(fù)后出現(xiàn)表文件殘留問題的內(nèi)部原因:

  1. 1. PostgreSQL 在事務(wù)運行的過程中,會在會話內(nèi)存中記錄創(chuàng)建的表文件。
  2. 2. 當(dāng)事務(wù)發(fā)生異?;蛘邎?zhí)行回滾操作時,會即時地清除這些表文件。
  3. 3. 當(dāng)事務(wù)異常中斷,如:磁盤不足引發(fā)的 PANIC 錯誤,系統(tǒng)發(fā)出的 OOM 內(nèi)存不足信號,或者發(fā)生軟件錯誤的擴展插件,系統(tǒng)停電導(dǎo)致的服務(wù)器崩潰時,會話內(nèi)存中記錄的新增表文件會丟失,出現(xiàn)表文件殘留的問題。

Redrock Postgres 的解決方案

Redrock Postgres 在創(chuàng)建表文件時,會記錄撤消日志,當(dāng)正在連接的會話因為某些原因被中止后,數(shù)據(jù)庫重新啟動后會檢查這些異常中止的事務(wù)。數(shù)據(jù)庫會回滾這些異常中止的事務(wù),根據(jù)記錄的撤消日志清理殘留的表文件。

下面我們在 Redrock Postgres 的數(shù)據(jù)庫中,創(chuàng)建和上面相同的表,并插入同樣的數(shù)據(jù)。

CREATE TABLE t (id integername text);

INSERT INTO t (id, name)
  SELECT i, repeat('Pg'32)
    FROM generate_series(11000000AS s(i);

下面我們啟動一個事務(wù)塊,創(chuàng)建一個空表t1,復(fù)制表t創(chuàng)建一個新表t_copy,并查看下表文件的存儲路徑。

BEGIN;

CREATE TABLE t1 ();

CREATE TABLE t_copy AS TABLE t;

SELECT pg_relation_filepath(nameAS path
  FROM (VALUES ('t1'), ('t_copy')) AS t (name);
     path
--------------
 base/5/16389
 base/5/16392

讓我們立即停止數(shù)據(jù)庫,模擬數(shù)據(jù)庫異常宕機的故障,再重新啟動數(shù)據(jù)庫服務(wù):

pg_ctl stop --mode=immediate
pg_ctl start

數(shù)據(jù)庫重新啟動后,手動觸發(fā)一次檢查點:

CHECKPOINT;

事務(wù)回滾的時候不會立即清理殘留的表文件,表文件的實際清理操作是在檢查點的過程中完成的。

檢查重啟前事務(wù)塊中新增的表文件:

ls -lh base/5/{16389,16392}
ls: cannot access 'base/5/16389': No such file or directory
ls: cannot access 'base/5/16392': No such file or directory

數(shù)據(jù)庫重新啟動后,回滾了異常中止的事務(wù),根據(jù)事務(wù)記錄的撤消日志清理了殘留的表文件。

轉(zhuǎn)自:https://mp.weixin.qq.com/s/98DnaCDJPcjFTS2JpxlRYg?


該文章在 2025/8/19 10:21:13 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved