ตารางไฮเปอร์ของ TimescaleDB
เปลี่ยนตาราง Postgres ให้เป็นตารางไฮเปอร์ของ TimescaleDB พร้อมการแบ่งพาร์ทิชันตามเวลาโดยอัตโนมัติตามช่วงชังก์
ตารางไฮเปอร์ของ TimescaleDB เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
TimescaleDB คืออะไร
ส่วนขยายของ PostgreSQL ที่สร้างขึ้นสำหรับข้อมูลอนุกรมเวลา เพิ่มการแบ่งพาร์ทิชันตามเวลา การบีบอัด การเก็บรักษาข้อมูล และการรวมข้อมูลแบบต่อเนื่องโดยอัตโนมัติ ใช้งานแบบแยกเดี่ยวหรือร่วมกับ PostgreSQL ทั่วไปได้
ตารางไฮเปอร์
ตารางเดียวในเชิงตรรกะที่ถูกแบ่งออกเป็น "ชังก์" ตามเวลาในเชิงกายภาพ:
CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE TABLE metrics (
ts TIMESTAMPTZ NOT NULL,
device_id BIGINT NOT NULL,
value DOUBLE PRECISION
);
SELECT create_hypertable('metrics', 'ts');
-- metrics is now a hypertable, chunks created automatically.ช่วงเวลาของชังก์
ชังก์เริ่มต้นมีขนาด 7 วัน ควรปรับให้เหมาะกับความเร็วของข้อมูล (ใช้ชังก์ที่เล็กลงสำหรับข้อมูลที่มีความเร็วสูง):
SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.การแทรกข้อมูล
ใช้ INSERT ตามปกติ — TimescaleDB จะส่งแถวไปยังชังก์ที่ถูกต้อง:
INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);การสอบถามตารางไฮเปอร์
มีลักษณะเหมือนตารางทั่วไป ตัววางแผนคำสั่งสอบถามจะตัดชังก์ที่ไม่เกี่ยวข้องออกสำหรับคำสั่งสอบถามที่จำกัดช่วงเวลา:
SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.time_bucket: date_trunc ที่ชาญฉลาดกว่า
ตัวช่วยจัดกลุ่มของ TimescaleDB:
SELECT time_bucket('1 hour', ts) AS hour,
AVG(value) AS avg_value
FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '24 hours'
GROUP BY hour
ORDER BY hour;การแบ่งพาร์ทิชันหลายคอลัมน์
สำหรับงานที่มีผู้เช่าหลายราย ให้แบ่งพาร์ทิชันตาม device_id เพิ่มด้วย:
SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.การสอบถามโดยใช้ตัวกรองทั้งสอง
ประสิทธิภาพดีที่สุดเมื่อตัวกรองครอบคลุมมิติการแบ่งพาร์ทิชันทั้งสอง:
SELECT * FROM metrics
WHERE device_id = 42
AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.ดัชนีบนตารางไฮเปอร์
ดัชนีจะถูกนำไปใช้กับทุกชังก์:
CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.การอัปเดตตารางไฮเปอร์
UPDATE และ DELETE ใช้งานได้ แต่ควรเกิดขึ้นไม่บ่อยกับข้อมูลอนุกรมเวลา ข้อมูลเก่ามักเป็นข้อมูลที่เพิ่มต่อท้ายเท่านั้นและไม่เปลี่ยนแปลง
การย้ายจากตารางทั่วไป
สามารถแปลงตารางที่มีอยู่เป็นตารางไฮเปอร์ได้:
SELECT create_hypertable('metrics', 'ts', migrate_data => true);สรุปทบทวน
ตารางไฮเปอร์ = การแบ่งพาร์ทิชันตามเวลาโดยอัตโนมัติสำหรับ PostgreSQL
- ตารางเดียวในเชิงตรรกะ แต่มีชังก์หลายส่วนในเชิงกายภาพ
- create_hypertable + chunk_time_interval
- ใช้ time_bucket สำหรับการรวมข้อมูลแบบแบ่งช่วง
- ดัชนีจะถูกนำไปใช้กับชังก์ทั้งหมด
ตรวจสอบอย่างรวดเร็ว
คุณกำลังรับข้อมูลเมตริกจากอุปกรณ์ IoT ที่อัตรา 100,000 แถวต่อวินาที เหตุใดจึงควรแปลงตารางเป็นตารางไฮเปอร์ของ TimescaleDB
คำถามที่พบบ่อย
บทเรียน “ตารางไฮเปอร์ของ TimescaleDB” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตารางไฮเปอร์ของ TimescaleDB” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตารางไฮเปอร์ของ TimescaleDB”
เปลี่ยนตาราง Postgres ให้เป็นตารางไฮเปอร์ของ TimescaleDB พร้อมการแบ่งพาร์ทิชันตามเวลาโดยอัตโนมัติตามช่วงชังก์ คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ตารางไฮเปอร์ของ TimescaleDB” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตารางไฮเปอร์ของ TimescaleDB
- การรวมข้อมูลแบบต่อเนื่อง
- นโยบายการบีบอัดและการเก็บรักษา
- การเลือกดัชนีสำหรับอนุกรมเวลา