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

hiệu suất hàng loạt jdbc

AFAIK không phải là lô phía máy chủ trong fe / be giao thức , vì vậy PgJDBC không thể sử dụng nó. . Cập nhật :Chà, tôi đã nhầm. PgJDBC (chính xác kể từ 9.3) không gửi hàng loạt truy vấn đến máy chủ nếu máy chủ không cần tìm nạp các khóa đã tạo . Nó chỉ xếp hàng một loạt các truy vấn trong bộ đệm gửi mà không cần đồng bộ hóa với máy chủ sau mỗi truy vấn riêng lẻ.

Xem:

Ngay cả khi các khóa được tạo được yêu cầu, truy vấn mở rộng giao thức được sử dụng để đảm bảo rằng văn bản truy vấn không cần phải được gửi mọi lúc, chỉ cần các tham số.

Thành thật mà nói, phân phối JDBC không phải là một giải pháp tuyệt vời trong mọi trường hợp. Nó dễ sử dụng đối với nhà phát triển ứng dụng, nhưng khá tối ưu về hiệu suất vì máy chủ vẫn phải thực thi từng câu lệnh riêng lẻ - mặc dù không phải phân tích cú pháp kế hoạch chúng riêng lẻ miễn là bạn sử dụng các báo cáo đã chuẩn bị.

Nếu bật autocommit, hiệu suất sẽ hoàn toàn thảm hại vì mỗi câu lệnh sẽ kích hoạt một cam kết. Ngay cả khi tắt tính năng tự động gửi, việc chạy nhiều câu lệnh nhỏ sẽ không nhanh chóng đặc biệt ngay cả khi bạn có thể loại bỏ sự chậm trễ của chuyến đi khứ hồi.

Giải pháp tốt hơn cho nhiều UPDATE đơn giản s có thể là:

  • COPY dữ liệu mới vào một TEMPORARY hoặc UNLOGGED bàn; và
  • Sử dụng UPDATE ... FROM đến UPDATE với JOIN chống lại bảng đã sao chép

Đối với COPY, hãy xem tài liệu PgJDBC COPY tài liệu trong tài liệu máy chủ .

Bạn thường thấy có thể điều chỉnh mọi thứ để ứng dụng của bạn không phải gửi tất cả những UPDATE riêng lẻ đó s gì cả.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao một thay đổi nhỏ trong cụm từ tìm kiếm lại làm chậm truy vấn đến vậy?

  2. Nâng cấp cơ sở dữ liệu của bạn lên phiên bản PostgreSQL 10 - Những điều bạn nên biết

  3. psql:không thể kết nối với máy chủ:Kết nối bị từ chối Lỗi khi kết nối với cơ sở dữ liệu từ xa

  4. không thể tạo postgres của người dùng:role postgres không tồn tại

  5. ROWID tương đương trong postgres 9.2