Khi làm việc với các bảng được phân vùng (partitioned tables) trong PostgreSQL, bạn cần chú ý rằng mỗi phân vùng là một bảng riêng biệt. Do đó, bạn phải tạo index cho từng phân vùng một cách độc lập, hoặc bạn có thể tạo index trên bảng mẹ (parent table), sau đó PostgreSQL sẽ tự động tạo các index tương ứng trên từng phân vùng.
Ví dụ về tạo Index trên Partitioned Table
Giả sử bạn có một bảng phân vùng sales như sau:
CREATE TABLE sales ( id SERIAL PRIMARY KEY, sale_date DATE, amount DECIMAL ) PARTITION BY RANGE (sale_date);
CREATE TABLE sales_2022 PARTITION OF sales FOR VALUES FROM (‘2022-01-01’) TO (‘2023-01-01’); CREATE TABLE sales_2023 PARTITION OF sales FOR VALUES FROM (‘2023-01-01’) TO (‘2024-01-01’);
Tạo Index trên Bảng Mẹ
Khi bạn tạo index trên bảng mẹ, PostgreSQL sẽ tự động tạo index tương ứng trên tất cả các phân vùng.
CREATE INDEX sales_sale_date_idx ON sales (sale_date);
PostgreSQL sẽ tự động tạo sales_sale_date_idx trên các phân vùng sales_2022 và sales_2023.
Tạo Index Trên Từng Phân Vùng
Nếu bạn muốn tạo các index riêng lẻ cho từng phân vùng, bạn có thể làm như sau:
CREATE INDEX sales_2022_sale_date_idx ON sales_2022 (sale_date);
CREATE INDEX sales_2023_sale_date_idx ON sales_2023 (sale_date);
Quản Trị Index Trên Partitioned Table
Liệt Kê Các Index
Để liệt kê tất cả các index trên một bảng phân vùng và các phân vùng của nó, bạn có thể sử dụng các truy vấn sau:
— Liệt kê các index trên bảng mẹ SELECT * FROM pg_indexes WHERE tablename = ‘sales’;
— Liệt kê các index trên phân vùng SELECT * FROM pg_indexes WHERE tablename = ‘sales_2022’;
SELECT * FROM pg_indexes WHERE tablename = ‘sales_2023’;
Xóa Index
Để xóa một index từ bảng mẹ hoặc phân vùng, bạn có thể sử dụng lệnh DROP INDEX:
— Xóa index từ bảng mẹ (sẽ tự động xóa index trên các phân vùng) DROP INDEX sales_sale_date_idx;
— Xóa index từ phân vùng cụ thể DROP INDEX sales_2022_sale_date_idx;
Kiểm Tra và Bảo Trì Index
Bạn có thể sử dụng các lệnh sau để kiểm tra và bảo trì các index trên bảng phân vùng:
- Kiểm Tra Index:
REINDEX TABLE sales;
- Vacuum Index:
VACUUM ANALYZE sales;
Quản Lý Partitioned Tables Hiệu Quả
Sử dụng Index một cách hợp lý:
-
- Tạo index trên các cột thường xuyên được sử dụng trong các truy vấn.
- Tránh tạo quá nhiều index để giảm thiểu chi phí ghi dữ liệu.
Tối ưu hóa phân vùng:
-
- Đảm bảo rằng các phân vùng được tạo dựa trên các cột có giá trị phân biệt cao (ví dụ: ngày tháng, ID).
- Sử dụng các phương pháp phân vùng hợp lý như RANGE, LIST, HASH, hoặc COMPOSITE.
Bảo trì định kỳ:
-
- Thực hiện REINDEX, VACUUM, và ANALYZE định kỳ để duy trì hiệu suất của cơ sở dữ liệu.
- Theo dõi và xóa các phân vùng không còn cần thiết để giải phóng tài nguyên.
Với việc sử dụng đúng cách các index trên partitioned table và quản lý chúng một cách hiệu quả, bạn có thể cải thiện đáng kể hiệu suất truy vấn và tối ưu hóa việc sử dụng tài nguyên trong PostgreSQL.
Chi tiết:
chúng ta có table orders đã partition và thực hiện tạo index cho nó:


=>Khi tạo index cho bảng chính => hệ thống tự động tạo index cho toàn bộ các partition của table đó.
Thêm data vào table:
mm=# insert into orders
mm-# SELECT 11, 22, 33,’2024-02-05′
mm-# FROM generate_series(1, 1000000);
INSERT 0 1000000
Kiểm tra lại index: => đã update index, size tăng lên so với trước khi thêm từ 16KB tăng lên 6320KB

- AI là gì? Khái niệm cơ bản và các ứng dụng thực tiễn
- Q106 In the spfile of a single instance database, LOCAL_LISTENER is set to LISTENER_1
- Q39 Which two statements are true about single row functions?
- Database ở chế độ mount thì có select được dữ liệu không?
- DirectAdmin là gì? Cài đặt DirectAdmin như thế nào?

Food & Drink 25 Html Template
WP Rocket
Bimber viral buzz wordpress theme
Divi Learndash Kit 1.2.1
Web mẫu - Shop Thời trang, túi xách, phụ kiện, công nghệ shop2 dark
Finance & Law 08 Html Template
Photography 21 Html Template
ColorMag - Magazine & News Style WordPress Theme
Booked
Divi Booster 4.3.5
eForm Pro
Ajax Search
Jannah - Newspaper Magazine News BuddyPress WordPress Theme
Photography 07 Html Template
Web mẫu - Xây dựng khuyến khích ý tưởng Promote
Avada Theme
Web mẫu - Shop Thời trang phụ kiện, túi xách shop47
Jobmonster - Job Board WordPress Theme
HUSKY Pro
CSS3 Compare Pricing Tables
Web mẫu - Shop Thời trang, túi xách, phụ kiện, công nghệ shop1
Food & Drink 18 Html Template
All in One SEO Pack Pro
LayerSlider Premium
Give - AmeriCloud Payments
Ncmaz - News Magazine Full Site Editing WordPress Block Theme
Carriar - Transport & Logistic WordPress Theme
UpdraftPlus Premium
MyThemeShop Lawyer WordPress Theme
Finance & Law 10 Html Template
Skindive Elementor Template Kit
Jevelin - Multi-Purpose Responsive WordPress AMP Theme
Fluxstore WooCommerce
ClubFashion WordPress Theme
Slider Revolution + all addons
Ewebot - Marketing & SEO Digital Agency WordPress Theme
Photography 20 Html Template
Advanced iFrame Pro
Finance & Law 05 Html Template
Give - Constant Contact
Photography 06 Html Template
Aveda - Ultimate Shopify Theme Os 2.0
Food & Drink 09 Html Template
Alone – Charity Multipurpose Non-profit WordPress Theme
Divi Builder 4.23.2
WooCommerce Advanced Shipping
Purina – Spa & Wellness FSE WordPress Theme
Yoast SEO Premium 23.9
Fancy Product Designer
WP MAPS PRO
RealAcre – Real Estate & Property Full Site Editing WordPress Theme
FS Poster pro
Apparelix Food Delivery Shopify Theme
RH - Real Estate WordPress Theme
Brixel Building Construction WordPress Theme
Baby Toys And Accessories Store Shopify Theme
Reales WP - Real Estate WordPress Theme
Antek - Construction Equipment Rentals WordPress Theme
HomeID - Real Estate WordPress Theme
WP-Optimize Premium
MyHome - Real Estate WordPress Theme
ARMember
Builo - Construction WordPress Theme
Konton - Construction & Architecture WordPress Theme
Cool Timeline Pro
RH - Real Estate WordPress Theme
Real Estate 7 WordPress
Interactive World Maps
WPBakery Page Builder
Image Map Pro
MonsterInsights Google Analytics Premium
Go Pricing