นโยบายการบีบอัดและการเก็บรักษา
บีบอัดชังก์เก่าด้วยการบีบอัดแบบคอลัมน์ของ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตารางไฮเปอร์ของ TimescaleDB
- การรวมข้อมูลแบบต่อเนื่อง
- นโยบายการบีบอัดและการเก็บรักษา
- การเลือกดัชนีสำหรับอนุกรมเวลา