PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Beberapa area peningkatan di PostgreSQL 9.4

Dengan rilis beta PostgreSQL 9.4, DBA telah diberikan beberapa fitur keren seperti pg_prewarm, JSONB, ALTER SYSTEM, Replication Slots, dan banyak lagi. Dari berbagai fitur tingkat arsitektur yang disajikan dalam versi ini, ada juga beberapa peningkatan kecil lainnya yang telah saya coba bahas di blog ini.

pg_stat_activity view menyertakan dua kolom baru (backend_xid/backend_min) untuk melacak informasi id transaksi. Kolom pg_stat_activity.backend_xid mencakup id dari transaksi tingkat atas yang saat ini mulai dijalankan dan kolom pg_stat_activity.backend_xmin mencakup informasi XID yang berjalan minimal. Lihat di bawah dua keluaran kueri yang dieksekusi dalam dua situasi berbeda, yang pertama menunjukkan informasi hierarkis id transaksi di kolom backend_xmin sesi yang mencoba memperoleh kunci (tabel/Baris) pada baris yang sama, sedangkan yang lain hanya transaksi independen yang terjadi tanpa mengganggu baris yang sama. Jenis informasi ini membantu pengguna untuk mengetahui lebih banyak tentang transaksi saat menunggu query yang ditemukan di database.

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)

Klausa baru di CREATE TABLESPACE/ALTER TABLESPACE masing-masing sebagai opsi "dengan" dan "pindah". Demikian pula, perintah meta db+ untuk memberikan informasi rinci tentang parameter yang ditetapkan untuk TABLESPACE tertentu menggunakan opsi "dengan".

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)

Sistem baru berfungsi untuk memberikan informasi tentang tipe regclass, regproc, regprocedure, regoper, regoperator dan regtype. Untuk semua tipe, fungsi baru adalah to_regclass(), to_regproc(), to_regprocedure(), to_regoper(), to_regoperator() dan 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)

Opsi “-g” baru di utilitas baris perintah CREATEUSER untuk menentukan keanggotaan peran.

-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, memiliki kolom baru “n_mod_since_analyze”, yang menyoroti jumlah baris yang telah diubah sejak tabel terakhir dianalisis. Di bawah keluaran singkat tentang perubahan kolom “n_mod_since_analyze”, analisis manual pertama kali dijalankan dan setelah beberapa saat autovacuum dipanggil di atas meja, dalam durasi ini kita dapat mengetahui berapa banyak baris yang terpengaruh dengan panggilan pembaruan katalog yang berbeda.

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, ini adalah tampilan baru yang diperkenalkan untuk melacak semua WAL yang dihasilkan dan juga menangkap jumlah WAL yang gagal. Jika Anda dari Oracle maka yang ini seperti “ARCHIVE LOG LIST”.

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, modul ekstensi memiliki kolom queryid baru untuk melacak kode hash internal, dihitung dari pohon parse pernyataan.

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

Terima kasih.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan, pada pembaruan duplikat di PostgreSQL?

  2. Bagaimana cara memperbarui baris yang dipilih dengan nilai dari file CSV di Postgres?

  3. Bagaimana cara membuat indeks unik di mana urutan kolom tidak diperhitungkan (set?)

  4. Menghitung dan menghemat ruang di PostgreSQL

  5. Bagaimana cara menghitung rata-rata pergerakan eksponensial pada postgres?