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

Các tính năng ẩn của PostgreSQL

Vì postgres thông minh hơn rất nhiều so với MySQL, nên không có nhiều "thủ thuật" để báo cáo;-)

Sách hướng dẫn có một số mẹo hiệu suất hay.

Một số điều khác liên quan đến hiệu suất cần ghi nhớ:

  • Đảm bảo đã bật autovacuum lên
  • Đảm bảo rằng bạn đã xem qua postgres.conf của mình (kích thước bộ nhớ cache hiệu quả, bộ đệm được chia sẻ, bản ghi nhớ công việc ... rất nhiều tùy chọn ở đó để điều chỉnh).
  • Sử dụng pgpool hoặc pgbouncer để giữ ở mức tối thiểu các kết nối cơ sở dữ liệu "thực" của bạn
  • Tìm hiểu cách GIẢI THÍCH và PHÂN TÍCH GIẢI THÍCH hoạt động. Học cách đọc đầu ra.
  • CLUSTER sắp xếp dữ liệu trên đĩa theo một chỉ mục. Có thể cải thiện đáng kể hiệu suất của các bảng lớn (hầu hết) chỉ đọc. Phân cụm là hoạt động một lần:khi bảng được cập nhật sau đó, các thay đổi sẽ không được phân nhóm.

Dưới đây là một số điều tôi thấy hữu ích mà không liên quan đến cấu hình hoặc hiệu suất.

Để xem những gì hiện đang xảy ra:

select * from pg_stat_activity;

Tìm kiếm các chức năng khác:

select * from pg_proc WHERE proname ~* '^pg_.*'

Tìm kích thước của cơ sở dữ liệu:

select pg_database_size('postgres');
select pg_size_pretty(pg_database_size('postgres'));

Tìm kích thước của tất cả cơ sở dữ liệu:

select datname, pg_size_pretty(pg_database_size(datname)) as size
  from pg_database;

Tìm kích thước của bảng và chỉ mục:

select pg_size_pretty(pg_relation_size('public.customer'));

Hoặc, liệt kê tất cả các bảng và chỉ mục (có thể dễ dàng hơn để xem điều này):

select schemaname, relname,
    pg_size_pretty(pg_relation_size(schemaname || '.' || relname)) as size
  from (select schemaname, relname, 'table' as type
          from pg_stat_user_tables
        union all
        select schemaname, relname, 'index' as type
          from pg_stat_user_indexes) x;

Ồ, và bạn có thể lồng các giao dịch, khôi phục các giao dịch từng phần ++

test=# begin;
BEGIN
test=# select count(*) from customer where name='test';
 count 
-------
     0
(1 row)
test=# insert into customer (name) values ('test');
INSERT 0 1
test=# savepoint foo;
SAVEPOINT
test=# update customer set name='john';
UPDATE 3
test=# rollback to savepoint foo;
ROLLBACK
test=# commit;
COMMIT
test=# select count(*) from customer where name='test';
 count 
-------
     1
(1 row)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Amazon RDS cho PostgreSQL Alternatives - ClusterControl cho PostgreSQL

  2. Cách tính toán trung bình động trong PostgreSQL

  3. Cách không tạo tiện ích mở rộng PostgreSQL 9.0 trên nền tảng RPM

  4. Tổng hợp một cột duy nhất trong truy vấn với nhiều cột

  5. Tạo VAI TRÒ PostgreSQL (người dùng) nếu nó không tồn tại