F.35. pg_buffercache
ÐодÑÐ»Ñ pg_buffercache даÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿Ð¾Ð½ÑÑÑ, ÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð² обÑем кеÑе бÑÑеÑов в ÑеалÑном вÑемени.
ÐÑÐ¾Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ð¿ÑедоÑÑавлÑÐµÑ ÑÑнкÑÐ¸Ñ Ð½Ð° C pg_buffercache_pages, возвÑаÑаÑÑÑÑ Ð½Ð°Ð±Ð¾Ñ Ð·Ð°Ð¿Ð¸Ñей, плÑÑ Ð¿ÑедÑÑавление pg_buffercache, коÑоÑое ÑвлÑеÑÑÑ Ñдобной обÑÑÑкой ÑÑой ÑÑнкÑии.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐµÐ³Ð¾ иÑполÑзование ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм и Ñленам Ñоли pg_monitor. ÐаÑÑ Ð´Ð¾ÑÑÑп дÑÑгим можно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ GRANT.
F.35.1. ÐÑедÑÑавление pg_buffercache
ÐпÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑолбÑов, ÑодеÑжаÑÐ¸Ñ ÑÑ Ð² пÑедÑÑавлении, Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ð² ТаблиÑе F.20.
ТаблиÑа F.20. СÑолбÑÑ pg_buffercache
Тип ÑÑолбÑа ÐпиÑание |
|---|
ID, в диапазоне 1.. |
ÐÐ¾Ð¼ÐµÑ Ñайлового Ñзла Ð´Ð»Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ |
OID ÑаблиÑного пÑоÑÑÑанÑÑва, ÑодеÑжаÑего оÑноÑение |
OID Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑодеÑжаÑей оÑноÑение |
ÐÐ¾Ð¼ÐµÑ ÑÐ»Ð¾Ñ Ð² оÑноÑении |
ÐÐ¾Ð¼ÐµÑ ÑÑÑаниÑÑ Ð² оÑноÑении |
СÑÑаниÑа загÑÑзнена? |
СÑÑÑÑик обÑаÑений по ÑаÑовой ÑÑÑелке |
ЧиÑло обÑлÑживаÑÑÐ¸Ñ Ð¿ÑоÑеÑÑов, закÑепивÑÐ¸Ñ ÑÑÐ¾Ñ Ð±ÑÑÐµÑ |
ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ бÑÑеÑа в обÑем кеÑе вÑдаÑÑÑÑ Ð¾Ð´Ð½Ð° ÑÑÑока. ÐÐ»Ñ Ð½ÐµÐ¸ÑполÑзÑемÑÑ
бÑÑеÑов вÑе Ð¿Ð¾Ð»Ñ ÑÐ°Ð²Ð½Ñ NULL, за иÑклÑÑением bufferid. ÐбÑие ÑиÑÑемнÑе каÑалоги показÑваÑÑÑÑ ÐºÐ°Ðº оÑноÑÑÑиеÑÑ Ðº базе даннÑÑ
под номеÑом 0.
Так как ÐºÐµÑ Ð¸ÑполÑзÑеÑÑÑ ÑовмеÑÑно вÑеми базами даннÑÑ
, обÑÑно в нÑм наÑ
одÑÑÑÑ Ð¸ ÑÑÑаниÑÑ Ð¸Ð· оÑноÑений, не пÑинадлежаÑиÑ
ÑекÑÑей базе даннÑÑ
. ÐÑо ознаÑаеÑ, ÑÑо Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
ÑÑÑок пÑи Ñоединении Ñ pg_class не найдÑÑÑÑ ÑооÑвеÑÑÑвÑÑÑие ÑÑÑоки, либо Ñоединение бÑÐ´ÐµÑ Ð½ÐµÐºÐ¾ÑÑекÑнÑм. ÐÑли Ð²Ñ Ñ
оÑиÑе вÑполниÑÑ Ñоединение Ñ pg_class, бÑÐ´ÐµÑ Ð¿ÑавилÑнÑм огÑаниÑиÑÑ Ñоединение ÑÑÑоками, в коÑоÑÑÑ
reldatabase ÑодеÑÐ¶Ð¸Ñ OID ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
или нолÑ.
ÐÐ»Ñ ÐºÐ¾Ð¿Ð¸ÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
ÑоÑÑоÑниÑ, коÑоÑÑе бÑдÑÑ Ð¾ÑобÑажаÑÑÑÑ, блокиÑовки в менеджеÑе бÑÑеÑов не ÑÑÑанавливаÑÑÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¾Ð±ÑаÑÐµÐ½Ð¸Ñ Ðº пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ pg_buffercache менÑÑе ÑказÑваÑÑÑÑ Ð½Ð° обÑÑной акÑивноÑÑи бÑÑеÑов, но Ð½Ð°Ð±Ð¾Ñ ÑезÑлÑÑаÑов, полÑÑеннÑй Ð´Ð»Ñ Ð²ÑеÑ
бÑÑеÑов, в Ñелом Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÑоглаÑованнÑм. Ðднако внÑÑÑи каждого оÑделÑного бÑÑеÑа ÑоглаÑованноÑÑÑ Ð¸Ð½ÑоÑмаÑии гаÑанÑиÑÑеÑÑÑ.
F.35.2. ÐÑÐ¸Ð¼ÐµÑ Ð²Ñвода
regression=# SELECT n.nspname, c.relname, count(*) AS buffers
FROM pg_buffercache b 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()))
JOIN pg_namespace n ON n.oid = c.relnamespace
GROUP BY n.nspname, c.relname
ORDER BY 3 DESC
LIMIT 10;
nspname | relname | buffers
------------+------------------------+---------
public | delete_test_table | 593
public | delete_test_table_pkey | 494
pg_catalog | pg_attribute | 472
public | quad_poly_tbl | 353
public | tenk2 | 349
public | tenk1 | 349
public | gin_test_idx | 306
pg_catalog | pg_largeobject | 206
public | gin_test_tbl | 188
public | spgist_text_tbl | 182
(10 rows)F.35.3. ÐвÑоÑÑ
ÐаÑк ÐиÑквÑд <[email protected]>
ÐÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ конÑÑÑÑкÑии: Ðейл Ðонвей <[email protected]>
СовеÑÑ Ð¿Ð¾ оÑладке: Том Ðейн <[email protected]>