F.29. pg_freespacemap â пÑоÑмоÑÑ ÐºÐ°ÑÑÑ Ñвободного пÑоÑÑÑанÑÑва #
ÐодÑÐ»Ñ pg_freespacemap пÑедоÑÑавлÑÐµÑ ÑÑедÑÑва Ð´Ð»Ñ Ð¸ÑÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°ÑÑÑ Ñвободного пÑоÑÑÑанÑÑва (FSM). РнÑм Ñеализована ÑÑнкÑÐ¸Ñ pg_freespace, ÑоÑнее, две пеÑегÑÑженнÑÑ
ÑÑнкÑии. ÐÑи ÑÑнкÑии показÑваÑÑ Ð·Ð½Ð°Ñение, запиÑанное в каÑÑе Ñвободного пÑоÑÑÑанÑÑва Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÑÑаниÑÑ, либо Ð´Ð»Ñ Ð²ÑеÑ
ÑÑÑÐ°Ð½Ð¸Ñ Ð¾ÑноÑениÑ.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐµÐ³Ð¾ иÑполÑзование ÑазÑеÑено ÑолÑко ÑÑпеÑполÑзоваÑелÑм и ÑолÑм Ñ Ð¿Ñавами Ñоли pg_stat_scan_tables. ÐаÑÑ Ð´Ð¾ÑÑÑп дÑÑгим можно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ GRANT.
F.29.1. ФÑнкÑии #
-
pg_freespace(rel regclass IN, blkno bigint IN) returns int2 ÐозвÑаÑÐ°ÐµÑ Ð¾Ð±ÑÑм Ñвободного пÑоÑÑÑанÑÑва на ÑÑÑаниÑе Ð´Ð»Ñ Ð¾ÑноÑениÑ, заданного паÑамеÑÑом
blkno, ÑоглаÑно FSM.-
pg_freespace(rel regclass IN, blkno OUT bigint, avail OUT int2) ÐÑдаÑÑ Ð¾Ð±ÑÑм Ñвободного пÑоÑÑÑанÑÑва на каждой ÑÑÑаниÑе оÑноÑениÑ, ÑоглаÑно FSM. ÐозвÑаÑаеÑÑÑ Ð½Ð°Ð±Ð¾Ñ ÐºÐ¾ÑÑежей
(blkno bigint, avail int2), по Ð¾Ð´Ð½Ð¾Ð¼Ñ ÐºÐ¾ÑÑÐµÐ¶Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑаниÑÑ Ð² оÑноÑении.
ÐнаÑениÑ, Ñ
ÑанимÑе в каÑÑе Ñвободного пÑоÑÑÑанÑÑва, не ÑвлÑÑÑÑÑ ÑоÑнÑми. Ðни окÑÑглÑÑÑÑÑ Ð´Ð¾ 1/256 велиÑÐ¸Ð½Ñ BLCKSZ (до 32 Ð±Ð°Ð¹Ñ Ñо знаÑением BLCKSZ по ÑмолÑаниÑ) и не поддеÑживаÑÑÑÑ Ð² акÑÑалÑном ÑоÑÑоÑнии пÑи каждом добавлении и изменении коÑÑежей.
ÐÐ»Ñ Ð¸Ð½Ð´ÐµÐºÑов оÑÑлеживаÑÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð½ÐµÐ¸ÑполÑзованнÑе ÑÑÑаниÑÑ, а не Ñвободное пÑоÑÑÑанÑÑво в ÑÑÑаниÑÐ°Ñ . Таким обÑазом, ÑÑи знаÑÐµÐ½Ð¸Ñ Ð¾ÑÑажаÑÑ ÑолÑко Ñо, ÑÑо ÑÑÑаниÑа иÑполÑзÑеÑÑÑ Ð¸Ð»Ð¸ Ñвободна.
F.29.2. ÐÑÐ¸Ð¼ÐµÑ Ð²Ñвода #
postgres=# SELECT * FROM pg_freespace('foo');
blkno | avail
-------+-------
0 | 0
1 | 0
2 | 0
3 | 32
4 | 704
5 | 704
6 | 704
7 | 1216
8 | 704
9 | 704
10 | 704
11 | 704
12 | 704
13 | 704
14 | 704
15 | 704
16 | 704
17 | 704
18 | 704
19 | 3648
(20 rows)
postgres=# SELECT * FROM pg_freespace('foo', 7);
pg_freespace
--------------
1216
(1 row)F.29.3. ÐвÑÐ¾Ñ #
ÐÑÑ
однÑÑ Ð²ÐµÑÑÐ¸Ñ ÑазÑабоÑал ÐаÑк ÐиÑквÑд <[email protected]>. ÐÐ»Ñ Ð²ÐµÑÑии 8.4 Ñ Ð½Ð¾Ð²Ð¾Ð¹ ÑеализаÑией FSM код адапÑиÑовал Хейкки ÐÐ¸Ð½Ð½Ð°ÐºÐ°Ð½Ð³Ð°Ñ <[email protected]>