Rumah pangkalan data tutorial mysql postgresql pg_buffercache

postgresql pg_buffercache

Jun 07, 2016 pm 02:58 PM
postgresql

postgresql pg_buffercache pg_buffercache模块是用于查看shared buffer cache信息,决定shared buffer cache大还是

postgresql pg_buffercache

 

pg_buffercache模块是用于查看shared buffer cache信息,决定shared buffer cache大还是小。

Installing pg_buffercache into a database:

$ createdb pgbench

$ psql -d pgbench -f /usr/share/postgresql/contrib/pg_buffercache.sql

两步即可完成

pg_buffercache.sql内容:

/* contrib/pg_buffercache/pg_buffercache--1.0.sql */

-- complain if script is sourced in psql, rather than via CREATE EXTENSION

\echo Use "CREATE EXTENSION pg_buffercache" to load this file. \quit

-- Register the function.

CREATE FUNCTION pg_buffercache_pages()

RETURNS SETOF RECORD

AS 'MODULE_PATHNAME', 'pg_buffercache_pages'

LANGUAGE C;

-- Create a view for convenient access.

CREATE VIEW pg_buffercache AS

        SELECT P.* FROM pg_buffercache_pages() AS P

        (bufferid integer, relfilenode oid, reltablespace oid, reldatabase oid,

         relforknumber int2, relblocknumber int8, isdirty bool, usagecount int2);

-- Don't want these to be available to public.

REVOKE ALL ON FUNCTION pg_buffercache_pages() FROM PUBLIC;

REVOKE ALL ON pg_buffercache FROM PUBLIC;

创建函数和视图,回收PUBLIC 权限。

Name Type References Description

bufferid integer   ID, in the range 1..shared_buffers

relfilenode oid pg_class.relfilenode Filenode number of the relation

reltablespace oid pg_tablespace.oid Tablespace OID of the relation

reldatabase oid pg_database.oid Database OID of the relation

relblocknumber bigint   Page number within the relation

relforknumber smallint   Fork number within the relation

isdirty boolean   Is the page dirty?

usagecount smallint   Page LRU count

pg_buffercache使用:

查看shared buffers大小:

postgres=# SELECT name,setting,unit,current_setting(name) FROM pg_settings WHERE name='shared_buffers';

      name      | setting | unit | current_setting 

----------------+---------+------+-----------------

 shared_buffers | 4096    | 8kB  | 32MB

(1 row)

postgres=# select count(*) from pg_buffercache;

 count 

-------

  4096

(1 row)

可见block数量一致,大小一致。

查看当前数据库buffer的使用情况排名:

SELECT

c.relname,

count(*) AS buffers

FROM pg_class c

INNER JOIN pg_buffercache b

ON b.relfilenode=c.relfilenode

INNER JOIN pg_database d

ON (b.reldatabase=d.oid AND d.datname=current_database())

GROUP BY c.relname

ORDER BY 2 DESC

LIMIT 10;

          relname          | buffers 

---------------------------+---------

 pg_statistic              |      15

 pg_operator               |      13

 pg_depend_reference_index |      13

 pg_depend                 |      13

 pg_rewrite                |       8

 pg_depend_depender_index  |       6

 pg_toast_2619             |       6

 pg_index                  |       6

 pg_extension              |       5

 pg_namespace              |       5

(10 rows)

使用pg_buffercache比较灵活,可以通过isdirty字段查询脏块,如果是未使用的buffer,那么除了bufferid,其他字段都为空值。

select count(*) from pg_buffercache where isdirty is true;

select count(*)*8/1024||'MB' from pg_buffercache where relfilenode is null and reltablespace is null and reldatabase is null and relforknumber is null and relblocknumber is null and isdirty is null and usagecount is null;

查看buffercache对象的使用大小以及百分比

SELECT

c.relname,

pg_size_pretty(count(*) * 8192) as buffered,

round(100.0 * count(*) /

(SELECT setting FROM pg_settings

WHERE name='shared_buffers')::integer,1)

AS buffers_percent,

round(100.0 * count(*) * 8192 /

pg_relation_size(c.oid),1)

AS percent_of_relation

FROM pg_class c

INNER JOIN pg_buffercache b

ON b.relfilenode = c.relfilenode

INNER JOIN pg_database d

ON (b.reldatabase = d.oid AND d.datname = current_database())

GROUP BY c.oid,c.relname

ORDER BY 3 DESC

LIMIT 10;

 

 

             relname              | buffered | buffers_percent | percent_of_relation 

----------------------------------+----------+-----------------+---------------------

 pg_statistic                     | 120 kB   |             0.4 |               100.0

 pg_depend                        | 104 kB   |             0.3 |                29.5

 pg_operator                      | 104 kB   |             0.3 |               100.0

 pg_depend_reference_index        | 104 kB   |             0.3 |                50.0

 pg_rewrite                       | 64 kB    |             0.2 |                66.7

 pg_operator_oid_index            | 32 kB    |             0.1 |               100.0

 pg_statistic_relid_att_inh_index | 32 kB    |             0.1 |               100.0

 pg_operator_oprname_l_r_n_index  | 40 kB    |             0.1 |               100.0

 pg_depend_depender_index         | 48 kB    |             0.1 |                22.2

 pg_amop_fam_strat_index          | 32 kB    |             0.1 |               100.0

缓冲区使用分布:

SELECT

c.relname, count(*) AS buffers,usagecount

FROM pg_class c

INNER JOIN pg_buffercache b

ON b.relfilenode = c.relfilenode

INNER JOIN pg_database d

ON (b.reldatabase = d.oid AND d.datname = current_database())

GROUP BY c.relname,usagecount

ORDER BY c.relname,usagecount;

             relname              | buffers | usagecount 

-----------------------------------+---------+------------

 pg_aggregate                      |       1 |          5

 pg_aggregate_fnoid_index          |       1 |          4

 pg_aggregate_fnoid_index          |       1 |          5

 pg_am                             |       1 |          5

 pg_amop                           |       3 |          5

 pg_amop_fam_strat_index           |       1 |          1

 pg_amop_fam_strat_index           |       3 |          5

 pg_amop_opr_fam_index             |       3 |          5

 pg_amproc                         |       1 |          4

 pg_amproc                         |       1 |          5

 pg_amproc_fam_proc_index          |       2 |          5

 pg_attrdef                        |       1 |          3

 pg_attrdef_adrelid_adnum_index    |       2 |          3

 pg_attrdef_oid_index              |       1 |          1

 pg_attrdef_oid_index              |       1 |          2

 pg_cast                           |       2 |          5

 pg_cast_source_target_index       |       2 |          5

 pg_collation                      |       1 |          1

 pg_collation_oid_index            |       1 |          3

 pg_collation_oid_index            |       2 |          5

 pg_constraint                     |       1 |          1

 pg_default_acl_role_nsp_obj_index |       1 |          5

 pg_depend                         |       3 |          1

 pg_depend                         |       1 |          2

 pg_depend                         |       9 |          5

 pg_depend_depender_index          |       1 |          4

 pg_depend_depender_index          |       5 |          5

 pg_depend_reference_index         |       2 |          1

 pg_depend_reference_index         |       1 |          2

 pg_depend_reference_index         |       1 |          4

 pg_depend_reference_index         |       9 |          5

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman MySQL dan PostgreSQL: Perbandingan prestasi dan petua pengoptimuman Jul 13, 2023 pm 03:33 PM

MySQL dan PostgreSQL: Perbandingan Prestasi dan Petua Pengoptimuman Semasa membangunkan aplikasi web, pangkalan data adalah komponen yang sangat diperlukan. Apabila memilih sistem pengurusan pangkalan data, MySQL dan PostgreSQL adalah dua pilihan biasa. Kedua-duanya ialah sistem pengurusan pangkalan data hubungan sumber terbuka (RDBMS), tetapi terdapat beberapa perbezaan dalam prestasi dan pengoptimuman. Artikel ini akan membandingkan prestasi MySQL dan PostgreSQL dan memberikan beberapa petua pengoptimuman. Perbandingan prestasi membandingkan dua pengurusan pangkalan data

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Jul 14, 2023 pm 02:34 PM

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Pengenalan: Dalam dunia moden pembangunan web, pangkalan data merupakan komponen penting. Apabila memilih pangkalan data, pilihan biasa ialah MySQL dan PostgreSQL. Artikel ini akan merangkumi amalan terbaik untuk menggunakan MySQL dan PostgreSQL dalam pembangunan web dan menyediakan beberapa contoh kod. 1. Senario yang boleh digunakan MySQL sesuai untuk kebanyakan aplikasi web, terutamanya yang memerlukan prestasi tinggi, kebolehskalaan dan kemudahan penggunaan.

Menggunakan PostgreSQL dalam Go: Panduan Lengkap Menggunakan PostgreSQL dalam Go: Panduan Lengkap Jun 18, 2023 am 09:28 AM

Bahasa Go ialah bahasa pengaturcaraan yang pantas dan cekap sesuai untuk membina perkhidmatan web dan aplikasi bahagian belakang. PostgreSQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang menjanjikan untuk memberikan kebolehpercayaan, skalabiliti dan keselamatan data yang lebih tinggi. Dalam artikel ini, kami akan mendalami penggunaan PostgreSQL dalam Go dan memberikan beberapa contoh dan petua kod praktikal. Memasang dan menyediakan PostgreSQL Pertama, kita perlu memasang dan menyediakan PostgreSQL. Boleh didapati di laman web rasmi

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Jul 31, 2023 pm 12:54 PM

Pelajari fungsi pangkalan data dalam bahasa Go dan laksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data PostgreSQL Dalam pembangunan perisian moden, pangkalan data adalah bahagian yang amat diperlukan. Sebagai bahasa pengaturcaraan yang berkuasa, bahasa Go menyediakan pelbagai fungsi operasi pangkalan data dan kit alat, yang boleh melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data dengan mudah. Artikel ini akan memperkenalkan cara mempelajari fungsi pangkalan data dalam bahasa Go dan menggunakan pangkalan data PostgreSQL untuk operasi sebenar. Langkah 1: Pasang pemacu pangkalan data dalam bahasa Go untuk setiap pangkalan data

MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran Jul 13, 2023 pm 03:31 PM

MySQL dan PostgreSQL: Keselamatan Data dan Strategi Sandaran Pengenalan: Dalam masyarakat moden, data telah menjadi bahagian penting dalam perniagaan dan kehidupan peribadi. Untuk sistem pengurusan pangkalan data, keselamatan data dan strategi sandaran adalah penting, kedua-duanya untuk melindungi data daripada kehilangan atau kerosakan dan untuk memastikan kebolehpercayaan dan integriti data yang dipulihkan. Artikel ini akan memberi tumpuan kepada keselamatan data dan strategi sandaran dua sistem pangkalan data hubungan arus perdana, MySQL dan PostgreSQL. 1. Keselamatan data: (1) Hak pengguna

Bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? Bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? Jun 12, 2023 am 09:27 AM

Dengan perkembangan teknologi pangkalan data, sistem pengurusan pangkalan data juga menyediakan pelbagai pilihan Pembangun boleh memilih pangkalan data yang paling sesuai mengikut keperluan dan pilihan mereka. Sebagai sistem pangkalan data hubungan sumber terbuka termaju, PostgreSQL semakin menarik perhatian dan penggunaan oleh pembangun. Jadi, bagaimana untuk menggunakan pangkalan data PostgreSQL dalam pengaturcaraan PHP? 1. Pasang dan konfigurasikan pangkalan data PostgreSQL Sebelum menggunakan PostgreSQL, anda perlu memasang dan mengkonfigurasinya. pertama

MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? Jul 12, 2023 pm 03:15 PM

MySQL dan PostgreSQL: Bagaimana untuk mengoptimumkan prestasi pertanyaan pangkalan data? Gambaran Keseluruhan: Prestasi pertanyaan pangkalan data adalah pertimbangan penting semasa membangunkan aplikasi. Prestasi pertanyaan yang baik meningkatkan responsif aplikasi dan pengalaman pengguna. Artikel ini akan memperkenalkan beberapa kaedah untuk mengoptimumkan prestasi pertanyaan pangkalan data, memfokuskan pada dua pangkalan data yang biasa digunakan, MySQL dan PostgreSQL. Pengoptimuman indeks pangkalan data: Indeks pangkalan data merupakan faktor penting dalam meningkatkan prestasi pertanyaan. Indeks boleh mempercepatkan carian data dan mengurangkan masa pengimbasan pertanyaan.

Perancangan dan penskalaan kapasiti pangkalan data: MySQL lwn. PostgreSQL Perancangan dan penskalaan kapasiti pangkalan data: MySQL lwn. PostgreSQL Jul 12, 2023 pm 01:43 PM

Perancangan dan pengembangan kapasiti pangkalan data: MySQL vs. PostgreSQL Pengenalan: Dengan perkembangan pesat Internet dan kemunculan era data besar, perancangan dan pengembangan kapasiti pangkalan data telah menjadi semakin penting. MySQL dan PostgreSQL ialah dua sistem pengurusan pangkalan data hubungan (RDBMS) yang popular. Mereka mempunyai ciri yang berbeza dan senario yang boleh digunakan dalam perancangan dan pengembangan kapasiti pangkalan data. Artikel ini akan membandingkan kedua-dua pangkalan data dan memberikan beberapa contoh kod untuk menunjukkan perbezaannya. 1. MySQ

See all articles