0Pricing
SQL Academy · บทเรียน

การวางแผนความจุและการตรวจสอบข้อมูลบวม

คาดการณ์การเติบโตของพื้นที่ดิสก์และ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. pg_stat_statements: คำสั่งค้นหายอดนิยม
  2. pgBadger สำหรับวิเคราะห์บันทึก
  3. การรวมการเชื่อมต่อ: PgBouncer
  4. การวางแผนความจุและการตรวจสอบข้อมูลบวม
← กลับไปที่ SQL Academy