برنامه نویسی

ایجاد دیدگاههای مادی در 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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا