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

Hiệu suất chậm quét tuần tự Postgresql trên 500 triệu hàng

Chỉ có một số điều sẽ hữu ích với truy vấn này:

  • Quá trình quét thực tế dường như không thành vấn đề (mất 42 giây), nhưng nếu bảng có thể được giữ trong RAM thì có thể nhanh hơn.

  • Vấn đề chính của bạn là sắp xếp, PostgreSQL đã song song hóa.

    Có một số điều bạn có thể điều chỉnh:

    • Tăng work_mem càng nhiều càng tốt, điều này sẽ làm cho việc sắp xếp nhanh hơn.

    • Tăng max_worker_processes (điều này sẽ yêu cầu khởi động lại), max_parallel_workersmax_parallel_workers_per_gather để có thể sử dụng nhiều lõi hơn cho truy vấn.

      PostgreSQL có một logic nội bộ để tính toán số lượng công nhân song song tối đa mà nó sẵn sàng sử dụng cho một bảng:nó sẽ xem xét số lượng công nhân song song như

      nhật ký 3 (kích thước bảng / min_parallel_table_scan_size )

      Bạn có thể buộc nó sử dụng nhiều quy trình hơn thế với:

      ALTER TABLE ohlcv SET (parallel_workers = 20);
      

      Nhưng max_parallel_workers vẫn là giới hạn trên.

Nếu không có xóa và cập nhật nào trên bảng và dữ liệu được chèn theo thứ tự sắp xếp, bạn có thể loại bỏ chỉ cần bỏ qua ORDER BY , với điều kiện bạn đặt synchronize_seqscans = off .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lặp lại một bảng theo các khoảng thời gian cố định trong Postgres?

  2. Kiểm tra giá trị bằng current_setting ()

  3. Truy vấn một cột JSON cụ thể (postgres) với sqlalchemy

  4. SQLAlchemy:lọc các giá trị được lưu trữ trong danh sách lồng nhau của trường JSONB

  5. Mẹo quản lý PostgreSQL từ xa