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
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
cở sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty