duckdb
Catalog(目錄): 表示整個資料庫或資料庫管理系統。一個資料庫伺服器可以包含多個資料庫,每個資料庫都有自己的 Catalog
1.database --catalog catalog_name
database: In‑Memory vs. Persistent Database
database-- database_list new_db.my_schema:
system
temp
2.Schema 用於組織和分類資料庫物件
schema catalog or a schema --namespace
information_schema提供檢視以檢視錶、檢視和函式資訊,
pg_catalog作為系統Schema,包含系統函式和資料型別定義,對Postgres的正常執行至關重要
pg_catalog.pg_namespace來檢視當前資料庫中全部的Schema
建立的資料庫 database
system
temp
tables(表)
Column(列)
提供了一定程度的隔離和名稱空間
基本技術概念
原始碼:資料庫事務- 事務的ACID特性
session--只有兩種執行結果:提交commit或回滾 ROLLBACK (All or Nothing)
悲觀機制與樂觀機制
悲觀鎖 LOCK機制
樂觀鎖(Optimistic Concurrency Control,縮寫“OCC”),又叫做樂觀併發控制,
MVCC 多版本併發控制(Multiversion concurrency control, MCC 或 MVCC)
MVCC的實現,是透過儲存資料在某個時間點的快照來實現的
WAL全稱是write ahead log,是PG中的online redo log 也就是先寫日誌,再寫磁碟
資料檔案的改變必須先寫入日誌,即日誌記錄重新整理到永久儲存之後,才能被寫
(即回滾恢復 REDO)
MVCC透過樂觀併發控制提高效能,WAL確保資料完整性並最佳化IO
隔離級別
redo log(重做日誌) undo log(回滾日誌) binlog(歸檔日誌)
分散式一致性
2PC(2 Prepare Commit) (協調者當機問題) (和zab有區別,zab是過半機制)
3PC(CanCommit、PreCommit、DoCommit) (協調者當機問題)
Paxos演算法 (分散式一致性問題最有效的演算法)(引入多個協調者)
Raft協議 (引入主節點,競選確定主節點;節點型別:Follower、Candidate 和 Leader)
1)(3) 稱為事務的兩階段提交.整個流程稱之為WAL技術,
即write ahead logging技術它的關鍵點就是先寫日誌,再寫磁碟
Postgresql
0.PostgreSQL模組和程式碼目錄結構
Main函式進來之後,啟動Postmaster程序,透過Postmaster傳送不同的Postgres程序。
如果Postgres收到Libpq請求,最終會讓執行引擎來執行相關命令
1.PostgreSQL 服務程序
2.連線屬性
預設資料庫是‘postgres',
預設模式‘public'
系統模式主要有 pg_catalog、information_schema、pg_temp等等
pg_catalog是系統Schema,包含了系統的自帶函式/資料型別定義等,pg_catalog是保障postgres正常運轉的重要基石
information_schema是方便使用者檢視錶/檢視/函式資訊提供的,它大多是檢視,MySQL,SQL Server同樣有information_schema這個schema。
3.PGDATA目錄包含幾個子目錄和控制檔案。
常見的位置PGDATA是/var/lib/pgsql/data
除此之外,叢集配置檔案postgresql.conf、pg_hba.conf和pg_ident.conf一般儲存在PGDATA
PostgreSQL的 日誌檔案 主要包括執行日誌檔案,重做日誌檔案,事務日誌檔案,伺服器日誌檔案。
PostgreSQL的 控制檔案 主要記錄了資料庫相關的執行資訊。
比如id,open,wal,checkpoint的位置等等,其中controlfile是很重要的檔案
PostgreSQL的 WAL檔案 通常預設儲存在$PGDATA/pg_wal目錄下
4.PostgreSQL的常用命令
首先,使用psql連線資料庫