Section 1: Process, Memory และ Write-Ahead Log
- โครงสร้าง postmaster, backend process และ background workers (checkpointer, background writer, WAL writer, autovacuum launcher)
- Shared Buffers, work_mem และ maintenance_work_mem ใช้ทรัพยากรเครื่องอย่างไร
- หลักการ WAL, Checkpoint และ Full Page Writes และความเชื่อมโยงกับ Backup และ Replication
- นโยบายเวอร์ชันของ PostgreSQL: รอบ Major ปีละครั้งและอายุการสนับสนุน 5 ปี
Section 2: MVCC, Transaction Isolation และ Locking
- Tuple Visibility (xmin/xmax) และเหตุผลที่ PostgreSQL ต้องมี VACUUM
- Read Committed, Repeatable Read และ Serializable พร้อมผลกระทบต่อแอปพลิเคชัน
- Row Lock และ Table Lock Mode ที่ขัดกัน และการดูด้วย pg_locks
- Lab: สาธิต Lock ที่รอกันและ Anomaly ในแต่ละระดับ Isolation
Section 3: Lab: Linux Essentials สำหรับงานฐานข้อมูล
- จัดการ Service ด้วย systemd และอ่าน Log ด้วย journalctl
- ตรวจพื้นที่ดิสก์และ I/O ด้วย df, du และ iostat และดูหน่วยความจำกับ Process
- ผู้ใช้ สิทธิ์ไฟล์ และการเข้าเครื่องด้วย SSH Key อย่างปลอดภัย
- Lab: ตรวจสุขภาพเครื่อง Ubuntu 24.04 ก่อนติดตั้งฐานข้อมูล
Section 4: Lab: ติดตั้งและปรับแต่ง PostgreSQL 17
- ติดตั้งจาก PGDG Repository บน Ubuntu 24.04 และเครื่องมือของ postgresql-common (pg_lsclusters, pg_ctlcluster)
- เปิด Data Checksums ตั้งแต่สร้าง Cluster และเหตุผลที่ควรเปิด
- postgresql.conf, pg_hba.conf และ ALTER SYSTEM พร้อมปรับค่าหน่วยความจำ Checkpoint และ Autovacuum ตามขนาดเครื่อง
- จัดการ Extension และข้อควรระวังเมื่อ Upgrade
- Lab: ปรับแต่ง Primary Node ตาม Checklist สำหรับ Production
Section 5: Workshop Day 1: Connection, สิทธิ์ และ PgBouncer
- เหตุผลที่ max_connections สูงเกินไปเป็นอันตราย และ PgBouncer แบบ Session, Transaction และ Statement Pooling
- Role Hierarchy ตามหลัก Least Privilege และ pg_maintain Role ที่เพิ่มเข้ามาใน PostgreSQL 17
- ยืนยันตัวตนด้วย SCRAM-SHA-256 และเปิด SSL/TLS
- Workshop: สร้าง Role สำหรับ Application, Read-only และ Admin ของ NovaMart เปิด TLS และวาง PgBouncer
- วัดผลด้วย pgbench ก่อนและหลังใช้ Connection Pooling