Thứ Sáu, 5 tháng 9, 2025

Partition Pruning Postgresql

Partition Pruning là một kỹ thuật tối ưu hóa trong hệ quản trị cơ sở dữ liệu PostgreSQL. Khi một bảng được phân vùng (partitioned), dữ liệu được chia thành nhiều phần nhỏ hơn gọi là các phân vùng (partitions). Partition Pruning giúp cải thiện hiệu suất truy vấn bằng cách loại bỏ các phân vùng không liên quan khỏi kế hoạch thực thi truy vấn. Điều này giúp giảm lượng dữ liệu cần xử lý, từ đó tăng tốc độ truy vấn.

Cách hoạt động của Partition Pruning

Khi bạn thực hiện một truy vấn trên một bảng được phân vùng, PostgreSQL sử dụng thông tin về cấu trúc phân vùng để xác định phân vùng nào chứa dữ liệu có liên quan đến điều kiện truy vấn. Các phân vùng không liên quan sẽ được bỏ qua (pruned) khỏi quá trình quét.

Ví dụ về Partition Pruning

Giả sử bạn có một bảng sales được phân vùng theo năm:

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');

Nếu bạn thực hiện một truy vấn để lấy dữ liệu bán hàng trong năm 2022, PostgreSQL sẽ chỉ quét phân vùng sales_2022 và bỏ qua phân vùng sales_2023:

SELECT * FROM sales WHERE sale_date BETWEEN '2022-01-01' AND '2022-12-31';

Trong trường hợp này, Partition Pruning giúp PostgreSQL bỏ qua phân vùng sales_2023, vì nó không chứa dữ liệu liên quan đến truy vấn.

Lợi ích của Partition Pruning

  1. Cải thiện hiệu suất truy vấn: Giảm lượng dữ liệu cần xử lý.
  2. Giảm I/O: Bỏ qua việc đọc các phân vùng không liên quan từ đĩa.
  3. Tăng tốc độ quét: Chỉ quét các phân vùng có dữ liệu liên quan đến truy vấn.

Điều kiện để Partition Pruning hoạt động

  • Phân vùng phải được thiết kế hợp lý và dựa trên các trường thường xuyên được sử dụng trong điều kiện truy vấn.
  • Các truy vấn phải sử dụng các điều kiện có thể được ánh xạ tới các giá trị phân vùng (ví dụ: sử dụng các cột phân vùng trong các điều kiện WHERE).

Kiểm tra bật tắt Partition Pruning: theo mặc định Postgresql ON tính năng này

SET enable_partition_pruning = on;

hoặc OFF;

Kết luận

Partition Pruning là một kỹ thuật quan trọng để tối ưu hóa truy vấn trên các bảng lớn được phân vùng trong PostgreSQL. Bằng cách loại bỏ các phân vùng không liên quan khỏi quá trình quét, Partition Pruning giúp cải thiện hiệu suất truy vấn và giảm thiểu việc sử dụng tài nguyên hệ thống.

=============================
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
Sửa bài viết

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master