PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Một số lĩnh vực cải tiến trong PostgreSQL 9.4

Với bản phát hành beta của PostgreSQL 9.4, DBA đã được cung cấp một số tính năng thú vị như pg_prewarm, JSONB, ALTER SYSTEM, Replication Slots và nhiều tính năng khác. Trong số nhiều tính năng cấp độ kiến ​​trúc được trình bày trong phiên bản này, cũng có một số cải tiến nhỏ khác mà tôi đã cố gắng đề cập trong blog này.

Chế độ xem pg_stat_activity bao gồm hai cột mới (backend_xid / backend_min) để theo dõi thông tin id giao dịch. Cột pg_stat_activity.backend_xid bao gồm id của giao dịch cấp cao nhất hiện đang bắt đầu được thực thi và cột pg_stat_activity.backend_xmin bao gồm thông tin về XID đang chạy tối thiểu. Kiểm tra bên dưới hai kết quả đầu ra truy vấn được thực thi trong hai trường hợp khác nhau, một đầu tiên hiển thị thông tin phân cấp của id giao dịch trong cột backend_xmin của các phiên cố gắng lấy khóa (bảng / Hàng) trên cùng một hàng, trong khi trường hợp khác chỉ là một giao dịch độc lập xảy ra mà không làm phiền cùng một hàng. Loại thông tin này giúp người dùng biết thêm về các giao dịch khi các truy vấn chờ được tìm thấy trong cơ sở dữ liệu.

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)

Các mệnh đề mới trong CREATE TABLESPACE / ALTER TABLESPACE lần lượt là các tùy chọn “với” và “di chuyển”. Tương tự, lệnh meta db + để cung cấp thông tin chi tiết về các tham số được đặt cho một TABLESPACE cụ thể bằng cách sử dụng tùy chọn “with”.

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)

Hệ thống mới có chức năng cung cấp thông tin về loại regclass, regproc, regprocedure, regoper, regoperator và regtype. Đối với tất cả các loại, các hàm mới là to_regclass (), to_regproc (), to_regprocedure (), to_regoper (), to_regoperator () và 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)

Tùy chọn “-g” mới trong tiện ích dòng lệnh CREATEUSER để chỉ định tư cách thành viên vai trò.

-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}

Chế độ xem pg_stat_all_tables, có một cột mới “n_mod_since_analyze”, đánh dấu số hàng đã được sửa đổi kể từ lần phân tích bảng cuối cùng. Dưới đây là kết quả ngắn gọn về các thay đổi của cột “n_mod_since_analyze”, phân tích thủ công lần đầu tiên được thực thi và sau một thời gian gọi autovacuum trên bảng, trong khoảng thời gian này, chúng tôi có thể tìm ra có bao nhiêu hàng được thực hiện với các lệnh gọi cập nhật danh mục khác nhau.

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, một chế độ xem mới được giới thiệu để theo dõi tất cả các WAL được tạo và nó cũng ghi lại số lượng WAL không thành công. Nếu bạn đến từ Oracle thì cái này giống như “DANH SÁCH NHẬT KÝ SẮP XẾP”.

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, mô-đun mở rộng có queryid cột mới để theo dõi mã băm bên trong, được tính từ cây phân tích cú pháp của câu lệnh.

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

Xin cảm ơn.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để định cấu hình HikariCP cho postgresql?

  2. Làm cách nào để bạn nối hai bảng trên một trường khóa ngoài bằng cách sử dụng django ORM?

  3. Phạm vi đường ray - nơi khớp chính xác

  4. Làm thế nào để khôi phục tệp kết xuất PostgreSQL vào cơ sở dữ liệu Postgres?

  5. Dữ liệu mới không tồn tại trong cột mảng Rails trên Postgres