PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengapa ambang pernyataan yang disiapkan PostgreSQL JDBC disetel ke 5?

Pernyataan yang disiapkan sisi server menggunakan sumber daya sisi server untuk menyimpan rencana eksekusi untuk pernyataan tersebut. Ambang batas memberikan heuristik yang menyebabkan pernyataan yang sebenarnya digunakan "sering" disiapkan. Definisi "sering" defaultnya adalah 5.

Perhatikan bahwa pernyataan yang disiapkan sisi server dapat menyebabkan rencana eksekusi yang buruk karena tidak didasarkan pada parameter yang diteruskan selama persiapan. Jika parameter yang diteruskan ke pernyataan yang disiapkan memiliki selektivitas yang berbeda pada indeks tertentu (misalnya), maka rencana kueri umum dari pernyataan yang disiapkan mungkin kurang optimal. Sebagai contoh lain, jika Anda memiliki situasi di mana eksekusi kueri jauh lebih besar daripada biaya untuk membuat rencana penjelasan, dan rencana penjelasan tidak disetel dengan benar karena kurangnya parameter pengikatan, Anda mungkin lebih baik tidak menggunakan pernyataan yang disiapkan sisi server.

Ketika pengemudi mencapai ambang batas, ia akan menyiapkan pernyataan sebagai berikut:

    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());
    }

Nama pernyataan dikirim sebagai bagian dari protokol kawat, yang memberi tahu Postgres untuk menyiapkannya di sisi server.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sail.js banyak koneksi saat mulai

  2. Apakah fungsi PostgreSQL bersifat transaksional?

  3. Membuat dump Postgres dan menyimpan ke server lain

  4. Bagaimana cara menggunakan `unaccent` dengan pencarian teks lengkap di Django 1.10?

  5. Postgres - hapus elemen dari array jsonb