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

นโยบายการบีบอัดและการเก็บรักษา

บีบอัดชังก์เก่าด้วยการบีบอัดแบบคอลัมน์ของ TimescaleDB และลบชังก์ที่หมดอายุโดยอัตโนมัติ

นโยบายการบีบอัดและการเก็บรักษา เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องบีบอัด

ข้อมูลอนุกรมเวลาสามารถบีบอัดได้ดีมาก TimescaleDB จะบีบอัดชังก์ในรูปแบบคอลัมน์ ซึ่งมักทำให้อัตราการบีบอัดอยู่ที่ 10–20 เท่า

การบีบอัดตารางไฮเปอร์

กำหนดว่าคอลัมน์ใดใช้แบ่งส่วนและจัดลำดับข้อมูลที่บีบอัด:

ALTER TABLE metrics SET (
  timescaledb.compress,
  timescaledb.compress_segmentby = 'device_id',
  timescaledb.compress_orderby = 'ts DESC'
);

นโยบายการบีบอัด

ทำให้การบีบอัดชังก์เก่าเป็นอัตโนมัติ:

SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- Chunks older than 7 days get compressed automatically.

ประสิทธิภาพการสอบถามข้อมูลที่บีบอัด

การอ่านชังก์ที่บีบอัดยังคงรวดเร็ว — TimescaleDB จะผลักตัวกรองลงไปยังที่เก็บข้อมูลแบบคอลัมน์ การเขียนหรืออัปเดตชังก์ที่บีบอัดมีข้อจำกัด (ส่วนใหญ่ทำได้เฉพาะการเพิ่มข้อมูลต่อท้าย)

นโยบายการเก็บรักษาข้อมูล

ลบข้อมูลที่เก่ากว่า N ช่วงเวลา — รวดเร็ว (ลบชังก์) เมื่อเทียบกับแบบช้า (ใช้ DELETE):

SELECT add_retention_policy('metrics', INTERVAL '90 days');
-- Chunks older than 90 days are dropped automatically.

การดำเนินการกับชังก์ด้วยตนเอง

สำรวจชังก์:

SELECT * FROM chunks_detailed_size('metrics');
SELECT show_chunks('metrics', older_than => INTERVAL '90 days');
SELECT drop_chunks('metrics', older_than => INTERVAL '90 days');

การจัดระดับพื้นที่จัดเก็บ

ย้ายชังก์เก่าไปยังดิสก์ที่ช้าลงโดยเปลี่ยนพื้นที่ตารางของแต่ละชังก์ เมื่อใช้ร่วมกับการบีบอัด คุณจะเก็บข้อมูลได้นานหลายปีด้วยต้นทุนต่ำ

อัตราการบีบอัดในการใช้งานจริง

อัตราโดยทั่วไปสำหรับข้อมูลเซนเซอร์:

  • เมตริกตัวเลข: ประหยัดพื้นที่ได้ 90–95% ขึ้นไป
  • ข้อมูลแบบหมวดหมู่: 70–80%
  • สตริง/JSON: ขึ้นอยู่กับเนื้อหา

คลายการบีบอัดเพื่ออัปเดต

คุณสามารถคลายการบีบอัดชังก์เพื่ออัปเดตข้อมูลเก่า แล้วจึงบีบอัดอีกครั้ง:

SELECT decompress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;
-- Update / fix
SELECT compress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;

สิ่งเทียบเท่าใน PostgreSQL ทั่วไป

หากไม่มี TimescaleDB คุณสามารถสร้างระบบขึ้นเองด้วยพาร์ทิชัน:

DROP TABLE events_2022;            -- retention (fast)
-- No native columnar compression in vanilla Postgres for time-series.

ใช้ร่วมกับการรวมข้อมูลแบบต่อเนื่อง

รูปแบบที่พบบ่อย: เก็บข้อมูลดิบไว้ 30 วัน เก็บการรวมข้อมูลรายชั่วโมงไว้ 1 ปี และเก็บการรวมข้อมูลรายวันไว้ตลอดไป แต่ละระดับจะถูกบีบอัดหรือเก็บรักษาตามความเหมาะสม

การเฝ้าติดตาม

ติดตามขนาดและอัตราการบีบอัด:

SELECT * FROM hypertable_compression_stats('metrics');

สรุปทบทวน

การบีบอัดและการเก็บรักษาข้อมูลทำให้ PostgreSQL กลายเป็นระบบจัดเก็บข้อมูลอนุกรมเวลาที่มีประสิทธิภาพ

  • บีบอัดชังก์เก่าได้ 10–20 เท่า
  • นโยบายการเก็บรักษาจะลบชังก์ได้ทันที
  • จัดระดับข้อมูลดิบ รายชั่วโมง และรายวันตามระยะเวลาการเก็บที่แตกต่างกัน
  • คลายการบีบอัดเพื่อเติมข้อมูลย้อนหลังเมื่อจำเป็น

ตรวจสอบอย่างรวดเร็ว

คุณต้องการเก็บเมตริกดิบไว้ 7 วัน และลบข้อมูลที่เก่ากว่านั้นทั้งหมดโดยอัตโนมัติ วิธีของ TimescaleDB คืออะไร

คำถามที่พบบ่อย

บทเรียน “นโยบายการบีบอัดและการเก็บรักษา” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “นโยบายการบีบอัดและการเก็บรักษา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “นโยบายการบีบอัดและการเก็บรักษา”

บีบอัดชังก์เก่าด้วยการบีบอัดแบบคอลัมน์ของ TimescaleDB และลบชังก์ที่หมดอายุโดยอัตโนมัติ คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “นโยบายการบีบอัดและการเก็บรักษา” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม

ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. ตารางไฮเปอร์ของ TimescaleDB
  2. การรวมข้อมูลแบบต่อเนื่อง
  3. นโยบายการบีบอัดและการเก็บรักษา
  4. การเลือกดัชนีสำหรับอนุกรมเวลา
← กลับไปที่ SQL Academy