Signatur
Beschreibung
pg_jit() fragt den PostgreSQL-Server nach Informationen über die JIT-Kompilierung (Just-In-Time) ab und gibt diese als assoziatives Array zurück. JIT in PostgreSQL beschleunigt die Ausführung aufwendiger Abfragen, indem häufig verwendete Operationen zur Laufzeit in nativen Maschinencode übersetzt werden.
Die Funktion ist nützlich, um zu prüfen, ob JIT auf dem verbundenen PostgreSQL-Server verfügbar ist und aktiv genutzt wird – etwa beim Performance-Tuning oder beim Debuggen von Abfrageplänen in rechenintensiven Szenarien wie großen Aggregationen oder komplexen Joins.
Die zurückgegebenen Daten enthalten typischerweise Angaben zur JIT-Unterstützung (options) und zu den aktivierten JIT-Optimierungen wie Inlining oder Optimierung. Der genaue Inhalt hängt von der PostgreSQL-Version und der serverseitigen Konfiguration ab.
Die Funktion steht erst ab PHP 8.0 zur Verfügung und setzt eine aktive Verbindung zu einem PostgreSQL-Server (in der Regel Version 11 oder neuer) voraus, da JIT erst ab PostgreSQL 11 unterstützt wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection Pflicht | PgSql\Connection | Eine aktive PostgreSQL-Verbindungsinstanz, die z. B. mit pg_connect() oder pg_pconnect() erstellt wurde. |
Rückgabewert
false zurückgegeben.Beispiele
JIT-Informationen einer PostgreSQL-Verbindung ausgeben
<?php
$conn = pg_connect('host=localhost dbname=testdb user=postgres password=geheim');
if (!$conn) {
die('Verbindung fehlgeschlagen');
}
$jitInfo = pg_jit($conn);
if ($jitInfo === false) {
echo 'Keine JIT-Informationen verfügbar oder JIT wird nicht unterstützt.';
} else {
echo 'JIT-Informationen:' . PHP_EOL;
foreach ($jitInfo as $key => $value) {
echo ' ' . $key . ': ' . $value . PHP_EOL;
}
}
pg_close($conn);
JIT-Unterstützung prüfen und bedingt handeln
<?php
$conn = pg_connect('host=localhost dbname=analytics user=postgres password=geheim');
if (!$conn) {
die('Verbindung konnte nicht hergestellt werden.');
}
$jit = pg_jit($conn);
if ($jit !== false && !empty($jit)) {
echo 'JIT ist auf diesem Server aktiv. Optimierungen können genutzt werden.' . PHP_EOL;
var_dump($jit);
} else {
echo 'JIT steht auf diesem Server nicht zur Verfügung.' . PHP_EOL;
echo 'Erwäge, PostgreSQL 11+ mit aktiviertem JIT zu verwenden.' . PHP_EOL;
}
pg_close($conn);
// Wichtig · Fallstricke
Voraussetzungen: JIT in PostgreSQL wird erst ab Version 11 unterstützt und muss serverseitig kompiliert und aktiviert sein (GUC-Parameter jit = on). Auf älteren PostgreSQL-Versionen oder bei deaktiviertem JIT gibt die Funktion möglicherweise false zurück.
Dokumentationslage: pg_jit() ist in der offiziellen PHP-Dokumentation nur spärlich beschrieben. Das genaue Format des zurückgegebenen Arrays kann je nach PostgreSQL-Version variieren. Es empfiehlt sich, die Rückgabe stets mit var_dump() oder print_r() zu inspizieren, bevor bestimmte Schlüssel direkt angesprochen werden.
Kein Einfluss auf Abfragen: Die Funktion liefert nur lesende Informationen – sie ändert keine Servereinstellungen. Einstellungen wie jit_above_cost oder jit_inline_above_cost müssen serverseitig oder per pg_query() mit SET angepasst werden.