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

Tại sao ngưỡng câu lệnh chuẩn bị PostgreSQL JDBC được mặc định là 5?

Các câu lệnh chuẩn bị phía máy chủ sử dụng tài nguyên phía máy chủ để lưu trữ kế hoạch thực thi cho câu lệnh. Ngưỡng cung cấp một phương pháp heuristic khiến các câu lệnh thực sự được sử dụng "thường xuyên" được chuẩn bị. Định nghĩa về "thường xuyên" được mặc định là 5.

Lưu ý rằng các câu lệnh được chuẩn bị từ phía máy chủ có thể gây ra kế hoạch thực thi kém vì chúng không dựa trên các tham số được truyền trong quá trình chuẩn bị. Nếu các tham số được truyền cho một câu lệnh đã chuẩn bị có độ chọn lọc khác nhau trên một chỉ mục cụ thể (ví dụ), thì kế hoạch truy vấn chung của câu lệnh đã chuẩn bị có thể là không tối ưu. Ví dụ khác, nếu bạn gặp trường hợp thực hiện truy vấn lớn hơn nhiều so với chi phí để tạo một kế hoạch giải thích và kế hoạch giải thích không được đặt đúng cách do thiếu các tham số ràng buộc, tốt hơn là bạn không nên sử dụng các câu lệnh được chuẩn bị từ phía máy chủ.

Khi trình điều khiển đạt đến ngưỡng, nó sẽ chuẩn bị câu lệnh như sau:

    if (!oneShot)
    {
        // Generate a statement name to use.
        statementName = "S_" + (nextUniqueID++);

        // And prepare the new statement.
        // NB: Must clone the OID array, as it's a direct reference to
        // the SimpleParameterList's internal array that might be modified
        // under us.
        query.setStatementName(statementName);
        query.setStatementTypes((int[])typeOIDs.clone());
    }

Tên câu lệnh được gửi như một phần của giao thức dây, lệnh này yêu cầu Postgres chuẩn bị cho phía máy chủ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres đang bỏ qua chỉ mục dấu thời gian, tại sao?

  2. CHỌN .. VÀO để tạo bảng trong PL / pgSQL

  3. Để bỏ qua các khóa trùng lặp trong quá trình 'sao chép từ' trong postgresql

  4. Không thể tìm thấy cột có tên logic

  5. Gọi-AzVMRunCommand và Start-Process cho người dùng cụ thể trên máy ảo từ xa bằng Azure Runbook