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

Fitur Tersembunyi PostgreSQL

Karena postgres jauh lebih waras daripada MySQL, tidak banyak "trik" untuk dilaporkan;-)

Manual ini memiliki beberapa kiat kinerja yang bagus.

Beberapa hal terkait kinerja lainnya yang perlu diingat:

  • Pastikan vakum otomatis diaktifkan
  • Pastikan Anda telah membaca postgres.conf Anda (ukuran cache efektif, buffer bersama, memori kerja ... banyak opsi yang dapat disesuaikan).
  • Gunakan pgpool atau pgbouncer untuk menjaga koneksi database "asli" Anda seminimal mungkin
  • Pelajari cara kerja EXPLAIN dan EXPLAIN ANALYZE. Belajar membaca hasilnya.
  • CLUSTER mengurutkan data pada disk berdasarkan indeks. Dapat secara dramatis meningkatkan kinerja tabel hanya-baca yang besar (kebanyakan). Pengelompokan adalah operasi satu kali:ketika tabel kemudian diperbarui, perubahan tidak dikelompokkan.

Berikut adalah beberapa hal yang menurut saya berguna yang tidak terkait dengan konfigurasi atau kinerja.

Untuk melihat apa yang sedang terjadi:

select * from pg_stat_activity;

Cari fungsi lain-lain:

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

Temukan ukuran basis data:

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

Temukan ukuran semua database:

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

Temukan ukuran tabel dan indeks:

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

Atau, untuk membuat daftar semua tabel dan indeks (mungkin lebih mudah untuk melihat ini):

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;

Oh, dan Anda dapat menyarangkan transaksi, mengembalikan sebagian transaksi++

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. Ganti karakter unicode di PostgreSQL

  2. Setel string kosong ('') ke NULL di seluruh database

  3. Bagaimana Anda menggunakan variabel skrip di psql?

  4. Bagaimana cara melemparkan array json ke array teks?

  5. Mengonfigurasi PostgreSQL untuk Observabilitas