sql >> Database teknologi >  >> RDS >> PostgreSQL

Er det muligt at få en historik over forespørgsler lavet i postgres

Der er ingen historik i selve databasen, hvis du bruger psql kan du bruge "\s" til at se din kommandohistorik der.

Du kan få fremtidige forespørgsler eller andre typer operationer ind i logfilerne ved at indstille log_statement i postgresql.conf filen. Det, du sandsynligvis ønsker i stedet, er log_min_duration_statement , som, hvis du indstiller den til 0, vil logge alle forespørgsler og deres varighed i logfilerne. Det kan være nyttigt, når først dine apps går live, hvis du indstiller det til en højere værdi, vil du kun se de langvarige forespørgsler, som kan være nyttige til optimering (du kan køre EXPLAIN ANALYZE på de forespørgsler, du finder der for at finde ud af, hvorfor de er langsom).

En anden praktisk ting at vide på dette område er, at hvis du kører psql og fortæller det "\timing", vil det vise, hvor lang tid hver sætning efter det tager. Så hvis du har en sql-fil, der ser sådan ud:

\timing
select 1;

Du kan køre det med de rigtige flag og se hver erklæring sammenflettet med, hvor lang tid det tog. Her er hvordan og hvordan resultatet ser ud:

$ psql -ef test.sql 
Timing is on.
select 1;
 ?column? 
----------
        1
(1 row)

Time: 1.196 ms

Dette er praktisk, fordi du ikke behøver at være database-superbruger for at bruge det, i modsætning til at ændre konfigurationsfilen, og det er lettere at bruge, hvis du udvikler ny kode og vil teste det.



  1. Operator forrang i regulære udtryk

  2. tomcat7:Kunne ikke indlæse JDBC-driverklassen [com.mysql.jdbc.Driver]

  3. Hvorfor bruge fremmednøgler uden handling ved sletning eller opdatering

  4. Sådan installeres og konfigureres MaxScale til MariaDB