sql >> Databasteknik >  >> RDS >> PostgreSQL

Få områden med förbättringar i PostgreSQL 9.4

Med betaversionen av PostgreSQL 9.4 har DBA:s fått några coola funktioner som pg_prewarm, JSONB, ALTER SYSTEM, Replication Slots och många fler. Av många funktioner på arkitektonisk nivå som presenteras i den här versionen, finns det också några andra mindre förbättringar som jag har försökt täcka i den här bloggen.

pg_stat_activity-vyn inkluderade två nya kolumner (backend_xid/backend_min) för att spåra transaktions-id-informationen. kolumnen pg_stat_activity.backend_xid täcker id:t för transaktionen på toppnivå som för närvarande börjar exekveras och kolumnen pg_stat_activity.backend_xmin täcker informationen om minimalt körande XID. Kolla in nedan för två frågeutgångar som körs i två olika situationer, den första visar den hierarkiska informationen för transaktions-id:t i backend_xmin-kolumnen med sessioner som försöker få lås (tabell/rad) på samma rad, medan den andra bara är en oberoende transaktion som sker utan att störa samma rad. Denna typ av information hjälper användaren att veta mer om transaktionerna när de väntar på frågor som hittas i databasen.

postgres=# select pid,backend_xid,backend_xmin,query from pg_stat_activity where pid<>pg_backend_pid();
pid | backend_xid | backend_xmin | query
-------+-------------+--------------+---------------------------
22351 | 1905 | 1904 | insert into a values (1);
785 | 1904 | | insert into a values (1);
12796 | | 1904 | truncate a;
12905 | | 1904 | delete from a ;

postgres=# select pid,backend_xid,backend_xmin,query from pg_stat_activity where pid<>pg_backend_pid();
pid | backend_xid | backend_xmin | query
-------+-------------+--------------+-----------------------------
22351 | | | insert into foo values (1);
785 | 1900 | | insert into foo values (1);
(2 rows)

Nya satser i CREATE TABLESPACE/ALTER TABLESPACE som "med" respektive "flytta" alternativ. På liknande sätt, metakommando db+ för att ge detaljerad information om parametrarna som ställts in för en viss TABLESPACE genom att använda alternativet "med".

postgres=# h create tablespace
Command: CREATE TABLESPACE
Description: define a new tablespace
Syntax:
CREATE TABLESPACE tablespace_name
[ OWNER user_name ]
LOCATION 'directory'
[ WITH ( tablespace_option = value [, ... ] ) ]

Example:

postgres=# create tablespace t1 location '/usr/local/pgpatch/pg/ts' with (seq_page_cost=1,random_page_cost=3);
CREATE TABLESPACE

postgres=# db+
List of tablespaces
Name | Owner | Location | Access privileges | Options | Description
------------+----------+--------------------------+-------------------+--------------------------------------+-------------
pg_default | postgres | | | |
pg_global | postgres | | | |
t1 | postgres | /usr/local/pgpatch/pg/ts | | {seq_page_cost=1,random_page_cost=3} |
(3 rows)

Nya systemfunktioner för att ge information om typ regclass,regproc,regprocedure,regoper,regoperator och regtype. För alla typerna är nya funktioner to_regclass(), to_regproc(), to_regprocedure(), to_regoper(), to_regoperator() och to_regtype().

Example:
select to_regclass('pg_catalog.pg_class'),to_regtype('pg_catalog.int4'),to_regprocedure('pg_catalog.abs(numeric)'),to_regproc('pg_catalog.now'),to_regoper('pg_catalog.||/');
to_regclass | to_regtype | to_regprocedure | to_regproc | to_regoper
-------------+------------+-----------------+------------+------------
pg_class | integer | abs(numeric) | now | ||/
(1 row)

Nytt "-g"-alternativ i kommandoradsverktyget CREATEUSER för att ange rollmedlemskap.

-bash-4.1$ createuser -g rw -p 10407 r1 
-bash-4.1$ psql -p 10407
psql (9.4beta1) Type "help" for help.

postgres=# dg
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication | {}
r1 | | {rw}

pg_stat_all_tables-vyn, har en ny kolumn "n_mod_since_analyze", som markerar antalet rader som har ändrats sedan tabellen senast analyserades. Nedan utdata kort om "n_mod_since_analyze" kolumnändringar, första gången manuell analys utförd och efter någon gång autovakuum anropat på bordet, under denna varaktighet kan vi räkna ut hur många rader som påverkats med olika kataloguppdateringsanrop.

postgres=# analyze a;
ANALYZE
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 0
(1 row)

postgres=# insert into a values(generate_series(1,100));
INSERT 0 100
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 100
(1 row)

postgres=# truncate a;
TRUNCATE TABLE
postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+------------------+-------------------------------+---------------------
a | | 2014-05-03 02:09:51.002006-07 | 100
(1 row)

postgres=# select relname,last_autoanalyze,last_analyze,n_mod_since_analyze from pg_stat_all_tables where relname='a';
relname | last_autoanalyze | last_analyze | n_mod_since_analyze
---------+-------------------------------+-------------------------------+---------------------
a | 2014-05-03 02:14:21.806912-07 | 2014-05-03 02:09:51.002006-07 | 0
(1 row)

pg_stat_archiver, det är en ny vy som introduceras för att spåra alla genererade WAL och den fångar också misslyckade WAL:s räkning. Om du kommer från Oracle är den här som "ARKIVLOGGLISTA".

postgres=# select * from pg_stat_archiver ;
-[ RECORD 1 ]------+------------------------------
archived_count | 167
last_archived_wal | 00000001000000000000009B
last_archived_time | 2014-05-02 20:42:36.230998-07
failed_count | 75
last_failed_wal | 000000010000000000000012
last_failed_time | 2014-05-01 12:09:57.087644-07
stats_reset | 2014-04-30 19:02:01.288521-07

pg_stat_statements, tilläggsmodulen har en ny kolumn queryid för att spåra den interna hashkoden, beräknad från satsens analysträd.

postgres=# select queryid,query from pg_stat_statements;
queryid | query
------------+------------------------------------
1144716789 | select * from pg_stat_statements ;
(1 row)

Tack.


  1. Skriva en csv-fil till SQL Server-databas med python

  2. Allvarligt fel:Anrop till en medlemsfunktion bind_param() på boolean

  3. Hur använder man dynamiska kolumnnamn i en UPDATE- eller SELECT-sats i en funktion?

  4. Formatera SQLite-frågeresultat som en HTML-tabell