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

pgFincore 1.2, ekstensi PostgreSQL

pgFincore 1.2 adalah ekstensi PostgreSQL untuk mengaudit dan memanipulasi cache halaman data sistem operasi. Ekstensi ini telah memiliki riwayat penggunaan selama 7 tahun, dengan evolusi yang sesuai dengan kebutuhan produksi.

Unduh di sini versi terbaru 1.2, kompatibel dengan PostgreSQL 9.6.

Tembolok data

Caching halaman data adalah operasi yang terjadi "secara alami", pada beberapa tingkatan dalam manajemen data. Objeknya sederhana:banyak lapisan ditumpangkan antara data yang direkam secara fisik pada disk dan ganti rugi kepada pengguna. Saat ini hampir setiap lapisan data memiliki abstraksi untuk melayani perintah baca dan tulis lebih cepat. Jadi, sebagian besar hard drive menawarkan cache tulis, yang menunda penulisan fisik, dan cache baca yang memungkinkan Anda mengantisipasi permintaan di masa mendatang dan menyajikan data dengan lebih cepat. Sistem yang setara ada di SAN, kartu RAID, sistem operasi, perangkat lunak, dll.

PostgreSQL tentu saja memiliki sistem manajemennya sendiri untuk menulis dan membaca, buffer bersama , yang dapat diaudit dengan ekstensi pg_buffercache.

Dimungkinkan untuk mengaudit cache sistem operasi dengan alat sistem, dan pgFincore port ini di PostgreSQL.

Baca Sebelumnya

Sebagian besar sistem operasi mengoptimalkan jalur data dengan menyediakan jendela baca-depan, ini memungkinkan untuk memuat data ke dalam cache dan dengan demikian memberikannya lebih cepat ke aplikasi. PostgreSQL berisi beberapa pengoptimalan untuk mendukung perilaku ini di tingkat sistem, dan juga membawa fungsionalitas serupa dengan opsi effective_io_concurrency.

Salah satu solusi untuk memfasilitasi pengoptimalan ini adalah dengan menggunakan panggilan sistem POSIX_FADVISE. Sekali lagi pgFincore port solusi ini di PostgreSQL.

pgFincore 1.2

Oleh karena itu, ekstensi ini memungkinkan:

  • untuk mendapatkan informasi yang tepat tentang penggunaan tabel atau indeks (dan beberapa file lain yang digunakan oleh PostgreSQL) dalam cache sistem yang mendukung POSIX (linux, BSD, ...),
  • untuk memanipulasi cache ini:buat petanya dan pulihkan nanti atau di server lain,
  • untuk mengoptimalkan jalur melalui panggilan posix_fadvise.

Dapatkan pgFincore

Paket Debian dan Red Hat tersedia di distribusi, dan untuk setiap versi PostgreSQL di repositori Apt PGDG dan RPM PGDG.

Dan sumber-sumber di repositori pgfincore git.

Butuh bantuan?

Selain dukungan komunitas, Anda dapat menghubungi 2ndQuadrant.

Contoh penggunaan

Penyiapan

$ sudo apt-get install postgresql-9.6-pgfincore
$ psql -c 'CREATE EXTENSION pgfincore;'

Informasi Sistem

# select * from pgsysconf_pretty();
 os_page_size | os_pages_free | os_total_pages 
--------------+---------------+----------------
 4096 bytes   | 314 MB        | 16 GB

Optimalkan random walk (kurangi jendela read-ahead)

# select * from pgfadvise_random('pgbench_accounts_pkey');
          relpath | os_page_size | rel_os_pages | os_pages_free 
------------------+--------------+--------------+---------------
 base/16385/24980 | 4096         | 2            | 1853808

Optimalkan traversal sekuensial (peningkatan jendela baca-depan)

# select * from pgfadvise_sequential('pgbench_accounts');
 relpath          | os_page_size | rel_os_pages | os_pages_free 
------------------+--------------+--------------+---------------
 base/16385/25676 | 4096         | 3176         | 1829288

Audit cache

# select * from pgfincore('pgbench_accounts');
      relpath       | segment | os_page_size | rel_os_pages | pages_mem | group_mem | os_pages_free | databit 
--------------------+---------+--------------+--------------+-----------+-----------+---------------+---------
 base/11874/16447   |       0 |         4096 |       262144 |         3 |         1 |        408444 | 
 base/11874/16447.1 |       1 |         4096 |        65726 |         0 |         0 |        408444 | 

Memuat tabel ke dalam memori

# select * from pgfadvise_willneed('pgbench_accounts');
      relpath       | os_page_size | rel_os_pages | os_pages_free 
--------------------+--------------+--------------+---------------
 base/11874/16447   |         4096 |       262144 |         80650
 base/11874/16447.1 |         4096 |        65726 |         80650

Hapus cache tabel

# select * from pgfadvise_dontneed('pgbench_accounts');
      relpath       | os_page_size | rel_os_pages | os_pages_free
--------------------+--------------+--------------+---------------
 base/11874/16447   |         4096 |       262144 |        342071
 base/11874/16447.1 |         4096 |        65726 |        408103

Pulihkan halaman yang di-cache

Di sini kita menggunakan parameter tipe bit-string yang mewakili halaman untuk memuat dan membongkar dari memori.

# select * 
  from pgfadvise_loader('pgbench_accounts', 0, true, true, 
                       B'101001'); -- Varbit décrivant les pages à manipuler
     relpath      | os_page_size | os_pages_free | pages_loaded | pages_unloaded 
------------------+--------------+---------------+--------------+----------------
 base/11874/16447 |         4096 |        408376 |            3 |              3

CATATAN:untuk demo, hanya 6 halaman data yang ditangani di atas, 1 memuat halaman, 0 membongkar halaman.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kesalahan menginstal psycopg2, perpustakaan tidak ditemukan untuk -lssl

  2. Tetapkan nilai dalam ketergantungan bagan Helm

  3. Lebih Banyak SQL, Lebih Sedikit Kode, Dengan PostgreSQL

  4. Bagaimana Anda menggunakan variabel skrip di psql?

  5. PostgreSQL:serial vs identitas