F.27. pg_buffercache
ÐодÑÐ»Ñ pg_buffercache даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿Ð¾Ð½ÑÑÑ, ÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð² обÑем кеÑе бÑÑеÑов в ÑеалÑном вÑемени.
ÐÑÐ¾Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ð¿ÑедоÑÑавлÑÐµÑ ÑÑнкÑÐ¸Ñ Ð½Ð° C pg_buffercache_pages, возвÑаÑаÑÑÑÑ Ð½Ð°Ð±Ð¾Ñ Ð·Ð°Ð¿Ð¸Ñей, плÑÑ Ð¿ÑедÑÑавление pg_buffercache, коÑоÑое ÑвлÑеÑÑÑ Ñдобной обÑÑÑкой ÑÑой ÑÑнкÑии.
Ðо ÑмолÑаниÑ, Ñоли public на вÑÑкий ÑлÑÑай, во избежание ÑгÑÐ¾Ð·Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи, запÑеÑÑн лÑбой доÑÑÑп к ÑÑим обÑекÑам.
F.27.1. ÐÑедÑÑавление pg_buffercache
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑолбÑов, ÑодеÑжаÑÐ¸Ñ ÑÑ Ð² пÑедÑÑавлении, Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð² ТаблиÑе F.17.
ТаблиÑа F.17. СÑолбÑÑ pg_buffercache
| ÐÐ¼Ñ | Тип | СÑÑлки | ÐпиÑание |
|---|---|---|---|
bufferid | integer |  | ID, в диапазоне 1..shared_buffers |
relfilenode | oid | pg_class.relfilenode | ÐÐ¾Ð¼ÐµÑ Ñайлового Ñзла Ð´Ð»Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ |
reltablespace | oid | pg_tablespace.oid | OID ÑаблиÑного пÑоÑÑÑанÑÑва, ÑодеÑжаÑего оÑноÑение |
reldatabase | oid | pg_database.oid | OID Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑей оÑноÑение |
relforknumber | smallint |  | ÐÐ¾Ð¼ÐµÑ ÑÐ»Ð¾Ñ Ð² оÑноÑении; Ñм. include/common/relpath.h |
relblocknumber | bigint |  | ÐÐ¾Ð¼ÐµÑ ÑÑÑаниÑÑ Ð² оÑноÑении |
isdirty | boolean |  | СÑÑаниÑа загÑÑзнена? |
usagecount | smallint |  | СÑÑÑÑик обÑаÑений по ÑаÑовой ÑÑÑелке |
pinning_backends | integer |  | ЧиÑло обÑлÑживаÑÑÐ¸Ñ Ð¿ÑоÑеÑÑов, закÑепивÑÐ¸Ñ ÑÑÐ¾Ñ Ð±ÑÑÐµÑ |
ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ бÑÑеÑа в обÑем кеÑе вÑдаÑÑÑÑ Ð¾Ð´Ð½Ð° ÑÑÑока. ÐÐ»Ñ Ð½ÐµÐ¸ÑполÑзÑемÑÑ
бÑÑеÑов вÑе Ð¿Ð¾Ð»Ñ ÑÐ°Ð²Ð½Ñ NULL, за иÑклÑÑением bufferid. ÐбÑие ÑиÑÑемнÑе каÑалоги показÑваÑÑÑÑ ÐºÐ°Ðº оÑноÑÑÑиеÑÑ Ðº базе даннÑÑ
под номеÑом 0.
Так как ÐºÐµÑ Ð¸ÑполÑзÑеÑÑÑ ÑовмеÑÑно вÑеми базами даннÑÑ
, обÑÑно в нÑм наÑ
одÑÑÑÑ Ð¸ ÑÑÑаниÑÑ Ð¸Ð· оÑноÑений, не пÑинадлежаÑиÑ
ÑекÑÑей базе даннÑÑ
. ÐÑо ознаÑаеÑ, ÑÑо Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
ÑÑÑок пÑи Ñоединении Ñ pg_class не найдÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑие ÑÑÑоки, либо Ñоединение бÑÐ´ÐµÑ Ð½ÐµÐºÐ¾ÑÑекÑнÑм. ÐÑли Ð²Ñ Ñ
оÑиÑе вÑполниÑÑ Ñоединение Ñ pg_class, бÑÐ´ÐµÑ Ð¿ÑавилÑнÑм огÑаниÑиÑÑ Ñоединение ÑÑÑоками, в коÑоÑÑÑ
reldatabase ÑодеÑÐ¶Ð¸Ñ OID ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
или нолÑ.
ÐÑи обÑаÑении к пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ pg_buffercache ÑÑÑанавливаÑÑÑÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки менеджеÑа внÑÑÑенниÑ
бÑÑеÑов на вÑемÑ, доÑÑаÑоÑное Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²ÑеÑ
даннÑÑ
ÑоÑÑоÑÐ½Ð¸Ñ Ð±ÑÑеÑов, коÑоÑÑе бÑдÑÑ Ð²ÑводиÑÑÑÑ Ð² пÑедÑÑавлении. ÐлагодаÑÑ ÑÑÐ¾Ð¼Ñ Ð¿ÑедÑÑавление вÑдаÑÑ ÑоглаÑованнÑй Ð½Ð°Ð±Ð¾Ñ ÑезÑлÑÑаÑов, не блокиÑÑÑ Ð¿Ñи ÑÑом обÑÑнÑе опеÑаÑии Ñ Ð±ÑÑеÑом долÑÑе, Ñем необÑ
одимо. Тем не менее, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð²Ð»Ð¸ÑÑÑ Ð½Ð° пÑоизводиÑелÑноÑÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, еÑли обÑаÑаÑÑÑÑ Ðº ÑÑÐ¾Ð¼Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑаÑÑо.
F.27.2. ÐÑÐ¸Ð¼ÐµÑ Ð²Ñвода
regression=# SELECT c.relname, count(*) AS buffers
FROM pg_buffercache b INNER JOIN pg_class c
ON b.relfilenode = pg_relation_filenode(c.oid) AND
b.reldatabase IN (0, (SELECT oid FROM pg_database
WHERE datname = current_database()))
GROUP BY c.relname
ORDER BY 2 DESC
LIMIT 10;
relname | buffers
---------------------------------+---------
tenk2 | 345
tenk1 | 141
pg_proc | 46
pg_class | 45
pg_attribute | 43
pg_class_relname_nsp_index | 30
pg_proc_proname_args_nsp_index | 28
pg_attribute_relid_attnam_index | 26
pg_depend | 22
pg_depend_reference_index | 20
(10 rows)F.27.3. ÐвÑоÑÑ
ÐаÑк ÐиÑквÑд <markir@paradise.net.nz>
ÐÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ конÑÑÑÑкÑии: Ðейл Ðонвей <neilc@samurai.com>
СовеÑÑ Ð¿Ð¾ оÑладке: Том Ðейн <tgl@sss.pgh.pa.us>