MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2017年2月5日 星期日

Postgres 的 UNLOGGED Table 功能

PostgreSQL 資料庫會對交易活動產生 Write-Ahead Log Segment,以達成交易資料庫需要的各種要求。不過產生交易紀錄,在某些程度上,也是會佔用作業系統資源。PostgreSQL 提供了針對個別表格設置不要產生交易紀錄,稱作 Unlogged Table,這麼一來便可以在犧牲資料回復保障的狀況下,加速該表格的讀寫。

Unlogged Table 使用優點:
  • 加快表格讀寫速度
  • 達成除了 Session-Based Temporary Table 之外,相似於全域性的 Temporary Table 功能

Unlogged Table 使用缺點:
  • 沒有交易日誌備份
  • 無法傳送資料到 Streaming Replication 的 Standby DB 上;也無法被 Logical replication 捕捉資料。
以下在一個有設置 Streaming Replication 的 Master/Standby 資料庫上測試。

建立一個表格
postgres=> CREATE TABLE unlogtest(msg TEXT);

CREATE TABLE

改成 UNLOGGED
postgres=> ALTER TABLE unlogtest SET UNLOGGED;
ALTER TABLE

也可以直接建立成 UNLOGGED Table
postgres=> CREATE UNLOGGED TABLE unlogtest(msg TEXT);
CREATE TABLE

接著插入資料
postgres=> INSERT INTO unlogtest VALUES('Check this string on Standby DB!');
INSERT 0 1

接著,連線到 Streaming Replication Replica 上查看,會發現剛剛輸入的資料不會傳到 Standby 上,無法存取
postgres=> \c postgres user1 replica_ip 5432
Password for user user1:
You are now connected to database "postgres" as user "user1" on host "replica_ip" at port "5432".
postgres=> SELECT * FROM unlogtest;
ERROR:  cannot access temporary or unlogged relations during recovery

最後,這個功能可以用來設計出類比 Oracle 的 Global Temporary Table 功能。進一步資訊,可以參考 Tip:: PPAS 9.4 and Global Temporary Table – Database Technologies 這篇文章。


參考:



沒有留言:

張貼留言