PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо прагът на подготвения израз на PostgreSQL JDBC е по подразбиране 5?

Подготвените от сървъра изрази консумират ресурси от страна на сървъра, за да съхранят плана за изпълнение на израза. Прагът предоставя евристика, която кара изявленията, които действително се използват „често“, да бъдат подготвени. Дефиницията на "често" по подразбиране е 5.

Имайте предвид, че подготвените оператори от страна на сървъра могат да причинят лоши планове за изпълнение, тъй като не се основават на параметрите, предадени по време на подготовката. Ако параметрите, предадени на подготвен израз, имат различна селективност на конкретен индекс (например), тогава общият план на заявката на подготвения израз може да е неоптимален. Като друг пример, ако имате ситуация, в която изпълнението на заявката е много по-голямо от разходите за създаване на план за обяснение и планът за обяснение не е правилно зададен поради липса на параметри за свързване, може да е по-добре да не използвате подготвени отчети от страна на сървъра.

Когато драйверът достигне прага, той ще подготви израза, както следва:

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

Името на израза се изпраща като част от кабелния протокол, който казва на Postgres да го подготви от страна на сървъра.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Бързо намиране на подобни низове с PostgreSQL

  2. Преброяване на броя на поява на подниз в рамките на низ в PostgreSQL

  3. Върнете всеки n-ти ред от база данни с помощта на ActiveRecord в релси

  4. Търсете многомерни jsonb данни в laravel postgres

  5. Как да получите списък с имена на колони и типове данни на таблица в PostgreSQL?