BRIN Index چیست؟
BRIN مخفف Block Range Index یا شاخص دامنه بلوک است. این یک تکنیک شاخصگذاری پایگاه داده است که برای بهبود عملکرد با جداول بسیار بزرگ طراحی شده است. BRIN ها مزایای مشابه پارتیشن بندی افقی یا شاردینگ را بدون نیاز به اعلام صریح پارتیشن ها ارائه می دهند.
BRIN برای شاخص روی جدولی که بزرگ است و جایی که ارزش کلید شاخص به راحتی با تابع MinMax مرتب و ارزیابی می شود، قابل استفاده است. به عنوان مثال، تاریخ ها، اعداد صحیح، شناورها و آدرس های IP همگی برای BRIN ها مناسب هستند.
BRIN ها با استفاده از دامنه های بلوک کار می کنند. دامنه بلوک گروهی از صفحات است که از نظر فیزیکی در جدول مجاور یکدیگر هستند. برای هر دامنه بلوک، برخی از اطلاعات خلاصه توسط شاخص ذخیره می شود. این اطلاعات خلاصه شامل حداقل و حداکثر مقادیر کلید در آن دامنه بلوک است.
هنگامی که یک پرس و جو بر روی جدولی با شاخص BRIN اجرا می شود، موتور پرس و جو ابتدا شاخص را اسکن می کند. برای هر دامنه بلوک، موتور پرس و جو بررسی می کند که آیا حداقل و حداکثر مقادیر در آن دامنه بلوک با معیارهای پرس و جو مطابقت دارد یا خیر. اگر یک دامنه بلوک با معیارهای پرس و جو مطابقت داشته باشد، موتور پرس و جو تمام صفحات آن دامنه بلوک را اسکن می کند.
BRIN ها می توانند عملکرد پرس و جو را به طور قابل توجهی برای جداول بسیار بزرگ بهبود بخشند، به خصوص برای پرس و جوهایی که فقط به زیرمجموعه کوچکی از داده ها نیاز دارند. BRIN ها همچنین می توانند اندازه شاخص را به طور قابل توجهی کاهش دهند، که می تواند به بهبود عملکرد کلی پایگاه داده کمک کند.
مثال
فرض کنید جدولی به نام customers داریم که شامل ستون های customer_id (یک عدد صحیح)، name (یک رشته) و order_date (تاریخ) است. ما می خواهیم یک شاخص BRIN روی ستون order_date ایجاد کنیم.
CREATE INDEX idx_customers_order_date ON customers USING BRIN (order_date);
در این مثال، BRIN اطلاعات خلاصه ای را برای هر ۱۲۸ صفحه در جدول ذخیره می کند. این بدان معناست که شاخص حدود ۱/۱۲۸ اندازه یک شاخص B-tree سنتی خواهد داشت.
هنگامی که پرس و جوی زیر اجرا می شود، موتور پرس و جو ابتدا شاخص BRIN را اسکن می کند:
SELECT * FROM customers WHERE order_date >= '۲۰۲۳-۰۱-۰۱' AND order_date < '۲۰۲۴-۰۱-۰۱';
موتور پرس و جو فقط دامنه های بلوکی را اسکن می کند که حداقل و حداکثر مقادیر آنها با معیارهای پرس و جو مطابقت داشته باشد. این می تواند به طور قابل توجهی تعداد صفحاتی را که باید اسکن شوند کاهش دهد، به خصوص اگر تاریخ های سفارش در جدول به طور یکنواخت توزیع شوند.
مزایای BRIN Index
- عملکرد پرس و جو را برای جداول بسیار بزرگ بهبود می بخشد.
- می تواند اندازه شاخص را به طور قابل توجهی کاهش دهد.
- برای انواع مختلف داده ها مناسب است.
- استفاده از آن آسان است.
معایب BRIN Index
- برای همه انواع پرس و جوها کارآمد نیست.
- می تواند دقت پرس و جو را کاهش دهد.
- پیاده سازی آن در همه پایگاه های داده ها موجود نیست.
موارد استفاده BRIN Index
- جداول داده انبار
- جداول ورود به سیستم
- جداول تجزیه و تحلیل
- هر جدولی که بسیار بزرگ است و دارای ستون های کلید مرتب شده است
خلاصه
BRIN Index یک تکنیک شاخصگذاری قدرتمند است که می تواند عملکرد پرس و جو را به طور قابل توجهی برای جداول بسیار بزرگ بهبود بخشد. با این حال، مهم است که از مزایا و معایب BRIN Index قبل از استفاده از آن آگاه باشید.