sql >> Databáze >  >> RDS >> PostgreSQL

Proč je práh připraveného příkazu PostgreSQL JDBC nastaven na 5?

Příkazy připravené na straně serveru spotřebovávají zdroje na straně serveru k uložení plánu provádění příkazu. Práh poskytuje heuristiku, která způsobí, že se připravují příkazy, které se skutečně používají „často“. Definice „často“ má výchozí hodnotu 5.

Všimněte si, že příkazy připravené na straně serveru mohou způsobit špatné plány provádění, protože nejsou založeny na parametrech předávaných během přípravy. Pokud parametry předané připravenému příkazu mají různou selektivitu na konkrétní index (například), pak obecný plán dotazů připraveného příkazu nemusí být optimální. Jako další příklad, pokud máte situaci, kdy je provedení dotazu mnohem vyšší než náklady na vytvoření plánu vysvětlení a plán vysvětlení není správně nastaven kvůli nedostatku parametrů vazby, může být lepší nepoužívat připravené výpisy na straně serveru.

Když řidič dosáhne prahové hodnoty, připraví výpis následovně:

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

Název příkazu je odeslán jako součást drátového protokolu, který říká Postgresu, aby jej připravil na straně serveru.



  1. automaticky naplánovat spuštění skriptu php v konkrétní čas

  2. Chyba MySQL:specifikace klíče bez délky klíče

  3. Manipulace s bity a načítání MySQL v PHP

  4. jak mohu vytvořit nový soubor XML z existující databáze v databázi PostgreSQL pomocí javy