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

Få områder med forbedringer i PostgreSQL 9.4

Med beta-udgivelsen af ​​PostgreSQL 9.4 har DBA'er fået nogle fede funktioner som pg_prewarm, JSONB, ALTER SYSTEM, Replication Slots og mange flere. Ud af talrige funktioner på arkitektonisk niveau præsenteret i denne version, er der ligeledes andre få mindre forbedringer, som jeg har forsøgt at dække i denne blog.

pg_stat_activity-visningen inkluderede to nye kolonner (backend_xid/backend_min) for at spore transaktions-id-oplysningerne. kolonnen pg_stat_activity.backend_xid dækker id'et for transaktioner på øverste niveau, der i øjeblikket begynder, og kolonnen pg_stat_activity.backend_xmin dækker oplysningerne om minimalt kørende XID. Tjek nedenfor to forespørgselsoutput udført i to forskellige situationer, den første viser den hierarkiske information om transaktions-id'et i backend_xmin-kolonnen af ​​sessioner, der forsøger at erhverve lås (tabel/række) på samme række, mens den anden kun er en uafhængig transaktion, der sker uden at forstyrre samme række. Denne form for information hjælper brugeren med at vide mere om transaktionerne, når de venter på forespørgsler fundet 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)

Nye klausuler i CREATE TABLESPACE/ALTER TABLESPACE som henholdsvis "med" og "move" muligheder. På samme måde, metakommando db+ for at give detaljerede oplysninger om parametrene indstillet for et bestemt TABLESPACE ved at bruge "with" mulighed.

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)

Nye systemfunktioner til at give information om type regclass,regproc,regprocedure,regoper,regoperator og regtype. For alle typerne er nye funktioner to_regclass(), to_regproc(), to_regprocedure(), to_regoper(), to_regoperator() og 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)

Ny "-g" mulighed i kommandolinjeværktøjet CREATEUSER for at angive rollemedlemskab.

-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 view, har en ny kolonne "n_mod_since_analyze", som fremhæver antallet af rækker, der er blevet ændret siden tabellen sidst blev analyseret. Nedenstående outputs kort om "n_mod_since_analyze" kolonneændringer, første gang manuel analyse udført og efter en gang autovakuum påkaldt på bordet, i denne varighed kan vi finde ud af, hvor mange rækker der er effektueret med forskellige katalogopdateringskald.

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 er en ny visning introduceret til at spore alle genererede WAL'er, og den fanger også mislykkede WAL's optælling. Hvis du er fra Oracle, så er denne som "ARKIVLOGLISTE".

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, udvidelsesmodulet har et nyt kolonne-queryid til at spore den interne hash-kode, beregnet fra sætningens parse-træ.

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

Tak.


  1. Find ikke-ASCII-tegn i varchar-kolonner ved hjælp af SQL Server

  2. Indlæser billeddata i BLOB-kolonner i Oracle

  3. Lad ikke Streams Pool narre dig

  4. Oprettelse af en tabel i enkeltbrugertilstand i postgres