postgresql pg_buffercache
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

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQL と PostgreSQL: パフォーマンスの比較と最適化のヒント Web アプリケーションを開発する場合、データベースは不可欠なコンポーネントです。データベース管理システムを選択する場合、MySQL と PostgreSQL の 2 つが一般的な選択肢となります。これらはどちらもオープンソースのリレーショナル データベース管理システム (RDBMS) ですが、パフォーマンスと最適化にはいくつかの違いがあります。この記事では、MySQL と PostgreSQL のパフォーマンスを比較し、最適化のヒントをいくつか紹介します。 2 つのデータベース管理を比較したパフォーマンスの比較

MySQL と PostgreSQL: Web 開発のベスト プラクティス はじめに: 現代の Web 開発の世界では、データベースは不可欠なコンポーネントです。データベースを選択する場合、一般的な選択肢は MySQL と PostgreSQL です。この記事では、Web 開発で MySQL と PostgreSQL を使用するためのベスト プラクティスについて説明し、いくつかのコード例を示します。 1. 適用可能なシナリオ MySQL は、ほとんどの Web アプリケーション、特に高いパフォーマンス、スケーラビリティ、使いやすさを必要とするアプリケーションに適しています。

Go 言語は、Web サービスやバックエンド アプリケーションの構築に適した高速かつ効率的なプログラミング言語です。 PostgreSQL は、より高い信頼性、拡張性、データ セキュリティを提供するオープンソースのリレーショナル データベース管理システムです。この記事では、Go での PostgreSQL の使用について詳しく説明し、いくつかの実用的なコード例とヒントを提供します。 PostgreSQL のインストールとセットアップ まず、PostgreSQL をインストールしてセットアップする必要があります。公式ウェブサイトでご覧いただけます

Go 言語でデータベース関数を学習し、PostgreSQL データの追加、削除、変更、クエリ操作を実装する現代のソフトウェア開発において、データベースは不可欠な部分です。 Go 言語は強力なプログラミング言語として、データベースの追加、削除、変更、クエリ操作を簡単に実装できる豊富なデータベース操作関数とツールキットを提供します。この記事では、Go言語でデータベース機能を学び、実際の運用でPostgreSQLデータベースを利用する方法を紹介します。ステップ 1: 各データベースに Go 言語でデータベース ドライバーをインストールする

MySQL と PostgreSQL: データ セキュリティとバックアップ戦略 はじめに: 現代社会では、データはビジネスと個人の生活に不可欠な部分になっています。データベース管理システムでは、データを損失や損傷から保護し、回復されたデータの信頼性と整合性を確保するために、データ セキュリティとバックアップ戦略が非常に重要です。この記事では、2 つの主流のリレーショナル データベース システム、MySQL と PostgreSQL のデータ セキュリティとバックアップ戦略に焦点を当てます。 1. データセキュリティ: (1) ユーザーの権利

データベース技術の発展に伴い、データベース管理システムにもさまざまな選択肢があり、開発者はニーズや好みに応じて最適なデータベースを選択できます。高度なオープンソース リレーショナル データベース システムとして、PostgreSQL は開発者によってますます注目され、使用されています。では、PHP プログラミングで PostgreSQL データベースを使用するにはどうすればよいでしょうか? 1. PostgreSQL データベースのインストールと設定 PostgreSQL を使用する前に、PostgreSQL データベースをインストールして設定する必要があります。初め

MySQL と PostgreSQL: データベース クエリのパフォーマンスを最適化するには?概要: データベース クエリのパフォーマンスは、アプリケーションを開発する際の重要な考慮事項です。クエリのパフォーマンスが優れていると、アプリケーションの応答性とユーザー エクスペリエンスが向上します。この記事では、一般的に使用される 2 つのデータベース、MySQL と PostgreSQL に焦点を当てて、データベース クエリのパフォーマンスを最適化する方法をいくつか紹介します。データベース インデックスの最適化: データベース インデックスは、クエリのパフォーマンスを向上させる重要な要素です。インデックスを使用すると、データ検索が高速化され、クエリのスキャン時間が短縮されます。

データベースの容量計画と拡張: MySQL と PostgreSQL はじめに: インターネットの急速な発展とビッグデータ時代の到来により、データベースの容量計画と拡張の重要性がますます高まっています。 MySQL と PostgreSQL は 2 つの一般的なリレーショナル データベース管理システム (RDBMS) であり、データベース容量の計画と拡張において異なる特性と適用可能なシナリオを持っています。この記事では、2 つのデータベースを比較し、その違いを示すコード例をいくつか示します。 1.MySQ
