ایجاد دیدگاههای مادی در PostgreSQL برای تجزیه و تحلیل سریعتر
هنگامی که با پرس و جوهای پیچیده یا مکرر دسترسی دارید ، دیدگاه های مادی در PostgreSQL می تواند عملکرد را به شدت بهبود بخشد. بر خلاف نماهای منظم ، نماهای مادی مجموعه نتیجه را ذخیره می کنند و امکان خواندن سریعتر با هزینه تازه های دستی را فراهم می کنند.
نمای مادی چیست؟
نمای مادی ، عکس فوری از نتیجه پرس و جو است که روی دیسک ذخیره می شود. این برای تجزیه و تحلیل ، گزارش ها یا معیارهای داشبورد که نیازی به بروزرسانی در زمان واقعی ندارند ، مفید است.
مرحله 1: یک جدول پایه ایجاد کنید
بیایید با یک نمونه شروع کنیم sales
جدول:
CREATE TABLE sales (
id SERIAL PRIMARY KEY,
product TEXT,
amount NUMERIC,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
مرحله 2: نمای مادی را ایجاد کنید
بیایید بگوییم که می خواهیم درآمد روزانه را محاسبه کنیم:
CREATE MATERIALIZED VIEW daily_revenue AS
SELECT
DATE(created_at) AS date,
SUM(amount) AS total
FROM sales
GROUP BY DATE(created_at)
ORDER BY date;
مرحله 3: نمای را پرس و جو کنید
پرس و جو از نمای مادی دقیقاً مانند پرس و جو یک جدول معمولی است ، و سریع است زیرا داده ها از پیش تعیین شده است:
SELECT * FROM daily_revenue ORDER BY date DESC;
مرحله 4: طراوت نمای
از آنجا که نمای مادی به روز نشده است ، باید آن را به صورت دستی (یا از طریق یک کار برنامه ریزی شده) تازه کنید:
REFRESH MATERIALIZED VIEW daily_revenue;
برای تازه کردن سریعتر ، اضافه کردن CONCURRENTLY
کلمه کلیدی (توجه: این به یک فهرست منحصر به فرد نیاز دارد):
CREATE UNIQUE INDEX daily_revenue_date_idx ON daily_revenue(date);
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;
موارد استفاده
- معیارهای داشبورد که نیازی به به روزرسانی در زمان واقعی ندارند
- نمایش داده های جمع آوری آهسته
- گزارش آفلاین
پایان
دیدگاههای مادی می توانند زمان پرس و جو را برای تجزیه و تحلیل در PostgreSQL به میزان قابل توجهی کاهش دهند. از آنها به صورت استراتژیک برای ذخیره محاسبات گران قیمت و بهبود عملکرد برنامه در جایی که داده های زمان واقعی بسیار مهم نیستند استفاده کنید.
اگر این پست به شما کمک کرد ، از من حمایت کنید: buymeacoffee.com/hexshift