PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgresql - Làm thế nào để tăng tốc độ cập nhật bảng khổng lồ (100 triệu hàng)?

Vì bạn đang tham gia hai bảng lớn và không có điều kiện nào có thể lọc ra các hàng, nên chiến lược kết hợp hiệu quả duy nhất sẽ là kết hợp băm và không chỉ mục nào có thể giúp được việc đó.

Đầu tiên sẽ có một quá trình quét tuần tự của một trong các bảng, từ đó một cấu trúc băm được xây dựng, sau đó sẽ có một quá trình quét tuần tự trên bảng khác và băm sẽ được thăm dò cho từng hàng được tìm thấy. Làm cách nào để bất kỳ chỉ mục nào có thể giúp được điều đó?

Bạn có thể mong đợi một hoạt động như vậy mất nhiều thời gian, nhưng có một số cách để bạn có thể tăng tốc hoạt động:

  • Xóa tất cả các chỉ mục và ràng buộc trên tx_input1 trước khi bắt đầu. Truy vấn của bạn là một trong những ví dụ mà một chỉ mục không giúp ích gì cả, nhưng thực sự gây hại hiệu suất, bởi vì các chỉ mục phải được cập nhật cùng với bảng. Tạo lại các chỉ mục và ràng buộc sau khi bạn thực hiện xong với UPDATE . Tùy thuộc vào số lượng chỉ mục trên bảng, bạn có thể mong đợi mức tăng hiệu suất từ ​​khá đến lớn.

  • Tăng work_mem cho một thao tác này với SET chỉ huy cao nhất có thể. Hoạt động băm có thể sử dụng càng nhiều bộ nhớ thì tốc độ càng nhanh. Với một bảng lớn có thể bạn sẽ vẫn có các tệp tạm thời, nhưng bạn vẫn có thể mong đợi một mức tăng hiệu suất tốt.

  • Tăng checkpoint_segments (hoặc max_wal_size từ phiên bản 9.6 trở đi) lên giá trị cao để có ít điểm kiểm tra hơn trong UPDATE hoạt động.

  • Đảm bảo rằng thống kê bảng trên cả hai bảng là chính xác để PostgreSQL có thể đưa ra ước tính tốt cho số lượng nhóm băm cần tạo.

Sau UPDATE , nếu nó ảnh hưởng đến một số lượng lớn hàng, bạn có thể cân nhắc chạy VACUUM (FULL) trên tx_input1 để thoát khỏi bảng kết quả bị phình ra. Thao tác này sẽ khóa bảng trong thời gian dài hơn, vì vậy hãy làm điều đó trong thời gian bảo trì. Nó sẽ làm giảm kích thước của bảng và do đó tăng tốc độ quét tuần tự.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hiển thị tất cả các đối tượng không hợp lệ trong PostgresQL

  2. PostgreSQL - Cài đặt trình điều khiển JDBC

  3. Tạo cơ sở dữ liệu PostgreSQL nhanh chóng bằng Hibernate ngay cả khi DB không tồn tại

  4. Số tuần tùy chỉnh của PostgreSQL - tuần đầu tiên có ngày 1 tháng 2

  5. QT5:Không tải được trình điều khiển psql trong windows