การวางแผนความจุและการตรวจสอบข้อมูลบวม
คาดการณ์การเติบโตของพื้นที่ดิสก์และ IOPS ตรวจสอบข้อมูลบวมของตารางและดัชนีเป็นประจำ และวางแผนอัปเกรดก่อนพื้นที่จะหมด
การวางแผนความจุและการตรวจสอบข้อมูลบวม เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
สิ่งที่ต้องคาดการณ์
ในการกำหนดขนาดฐานข้อมูลสำหรับ 6–12 เดือนข้างหน้า คุณต้องคาดการณ์สิ่งต่อไปนี้:
- การใช้ดิสก์ (ข้อมูล + WAL + ดัชนี)
- ความต้องการ IOPS
- ชุดข้อมูลที่ใช้งานอยู่ใน RAM
- จำนวนการเชื่อมต่อ
การเติบโตของดิสก์
ติดตามแนวโน้มการเติบโตล่าสุด:
SELECT pg_size_pretty(pg_database_size(current_database()));
SELECT pg_size_pretty(pg_total_relation_size(t.oid)) AS total,
relname
FROM pg_class t
WHERE relkind = 'r'
ORDER BY pg_total_relation_size(t.oid) DESC LIMIT 20;ติดตามการเติบโตแยกตามตาราง
ตั้งเวลางานบันทึกค่าชี้วัดและสร้างกราฟ:
INSERT INTO size_history (ts, tablename, size_bytes)
SELECT NOW(), relname, pg_total_relation_size(oid)
FROM pg_class WHERE relkind = 'r';ประมาณการ IOPS
ตารางที่มีการอ่านอินพุต/เอาต์พุตสูงจะแสดงอยู่ในสถิติตารางผู้ใช้:
SELECT relname, seq_tup_read, idx_tup_fetch,
seq_tup_read + idx_tup_fetch AS total_reads
FROM pg_stat_user_tables
ORDER BY total_reads DESC LIMIT 20;กำหนดขนาด RAM
shared_buffers ≈ 25% ของ RAM ส่วน effective_cache_size ≈ 75% (เป็นคำแนะนำสำหรับตัววางแผน ไม่ใช่การจัดสรรจริง) work_mem ต่อการเชื่อมต่อ × จำนวนการเชื่อมต่อไม่ควรเกิน RAM ที่พร้อมใช้งาน
ตรวจสอบข้อมูลพองตัว
ค้นหาตารางที่มีแถวตายมากที่สุด:
SELECT relname,
n_live_tup,
n_dead_tup,
round(n_dead_tup::numeric / NULLIF(n_live_tup, 0), 2) AS dead_ratio,
last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;ข้อมูลพองตัวของดัชนี
ใช้ pgstattuple หรือเครื่องมือในตัว:
CREATE EXTENSION pgstattuple;
SELECT relname,
pg_size_pretty(pg_relation_size(indexrelid)) AS size,
(pgstatindex(indexrelid::regclass)).leaf_fragmentation
FROM pg_stat_user_indexes
ORDER BY pg_relation_size(indexrelid) DESC LIMIT 20;ดัชนีที่ไม่ได้ใช้งาน
ค้นหาและลบออก เพราะดัชนีเหล่านี้มีต้นทุนด้านการเขียน:
SELECT schemaname, relname, indexrelname,
pg_size_pretty(pg_relation_size(indexrelid))
FROM pg_stat_user_indexes
WHERE idx_scan = 0
AND indexrelname NOT LIKE '%_pkey'
ORDER BY pg_relation_size(indexrelid) DESC;ตรวจสอบการเชื่อมต่อ
มีไคลเอ็นต์เชื่อมต่ออยู่กี่ราย และอยู่ในสถานะใด:
SELECT datname, usename, application_name, state, COUNT(*)
FROM pg_stat_activity
GROUP BY 1,2,3,4 ORDER BY 5 DESC;ธุรกรรมที่ใช้เวลานาน
สาเหตุของการขาดแคลนการกวาดล้าง:
SELECT pid, state, xact_start, NOW() - xact_start AS xact_age, query
FROM pg_stat_activity
WHERE xact_start IS NOT NULL
ORDER BY xact_age DESC NULLS LAST LIMIT 20;WAL และคลังเก็บถาวร
ตรวจสอบอัตราการสร้าง WAL เพื่อกำหนดขนาดพื้นที่จัดเก็บคลังถาวร:
SELECT pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), '0/0')) AS total_wal_generated;วางแผนสำหรับการสลับไปใช้ระบบสำรอง
ดิสก์ของแบบจำลองควรมีขนาดเท่ากับระบบหลัก ตรวจสอบว่าอัตราการตามข้อมูลทันของแบบจำลอง ≥ อัตราการเขียนของระบบหลัก
สรุปทบทวน
การวางแผนความจุคือการสร้างกราฟของค่าชี้วัดที่ถูกต้อง
- การเติบโตของขนาดแยกตามตาราง
- อัตราส่วนแถวตาย
- ดัชนีที่ไม่ได้ใช้งาน
- ธุรกรรมที่ใช้เวลานานและบล็อกการกวาดล้าง
- จำนวนการเชื่อมต่อ
ตรวจสอบอย่างรวดเร็ว
คุณควรสอบถามมุมมองใดเพื่อค้นหาตารางที่มีแถวตายมากที่สุดสำหรับวางแผนการกวาดล้าง
คำถามที่พบบ่อย
บทเรียน “การวางแผนความจุและการตรวจสอบข้อมูลบวม” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การวางแผนความจุและการตรวจสอบข้อมูลบวม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การวางแผนความจุและการตรวจสอบข้อมูลบวม”
คาดการณ์การเติบโตของพื้นที่ดิสก์และ IOPS ตรวจสอบข้อมูลบวมของตารางและดัชนีเป็นประจำ และวางแผนอัปเกรดก่อนพื้นที่จะหมด คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การวางแผนความจุและการตรวจสอบข้อมูลบวม” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- pg_stat_statements: คำสั่งค้นหายอดนิยม
- pgBadger สำหรับวิเคราะห์บันทึก
- การรวมการเชื่อมต่อ: PgBouncer
- การวางแผนความจุและการตรวจสอบข้อมูลบวม