powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу найти схему pg_toast
8 сообщений из 8, страница 1 из 1
Не могу найти схему pg_toast
    #40107971
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Полная мистика.

Есть описание того, что pg_toast существует
"включить в вывод системные объекты (те, что находятся в схемах information_schema, pg_toast
и pg_catalog)." = стр 2525 инструкции 13 по постгрес

Ищу такую схему - нет.

Искал таблицы которые имею в названии "toast" в схемах information_schema и pg_catalog - НЕТу.

Смотрел/искал TOAST таблицу в
pg_catalog.pg_largeobject
pg_catalog.pg_largeobject_metadata
- опять НЕТу (вообще нет ни одной строки записи).

искал таблицу в pg_class - такой таблицы с номер oid, который привязан к основной таблице - опять нету
Так основная таблица - 27081, а TOAST=27084

Но по описанию в ТОАСТ таблицу выносятся строки, которые имеют размер более 4 кб.
Я специально засунул в текстовую ячеку (text) код книги и бинарный код от фото.
Получилось 4 Мб, а TOAST таблицы так и нету.

ВОПРОС - что я делаю не так и почему нет и не вижу TOAST таблиц и каталога pg_toast.
В системе я как владелец и администратор с полными правами.
ANALYZE делал, очистку системы так же делал (VACUUM FULL)

P.S. - глянуть вообще на эту таблицу, глянуть статистику, строки. как она вообще устроена.
.
...
Рейтинг: 0 / 0
Не могу найти схему pg_toast
    #40108006
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,

Неправильно ищете 20 раз подряд ).

авторИщу такую схему - нет.
Код: sql
1.
select * from pg_namespace;



авторИскал таблицы которые имею в названии "toast" в схемах information_schema и pg_catalog - НЕТу.
toast имеют relkind='t' а не 'r' а вы в pg_class небось 'r' искали


авторСмотрел/искал TOAST таблицу в
pg_catalog.pg_largeobject
pg_catalog.pg_largeobject_metadata
- опять НЕТу (вообще нет ни одной строки записи).
Вот там точно нет.


авторискал таблицу в pg_class - такой таблицы с номер oid, который привязан к основной таблице - опять нету
Так основная таблица - 27081, а TOAST=27084

Опять же вопрос как искали... вы бы запросы приводили.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Не могу найти схему pg_toast
    #40108017
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вроде все ищется

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
guzya@guzya-desktop ~ $ pid=$(docker run -d --rm -p 5432:5432 -e POSTGRES_PASSWORD=password postgres:13) && docker exec -it $pid bash && docker stop $pid

root@97a3ed9b58c3:/# psql -U postgres
psql (13.2 (Debian 13.2-1.pgdg100+1))
Type "help" for help.

postgres=# select 
postgres-#     (schemaname||'.'||relname) as name
postgres-#     ,pg_relation_size(schemaname||'.'||relname) as size
postgres-#     ,pg_size_pretty(pg_relation_size(schemaname||'.'||relname)) as p_size
postgres-#     ,pg_size_pretty(pg_total_relation_size(schemaname||'.'||relname)) as total_size
postgres-#     ,pg_size_pretty(pg_indexes_size(schemaname||'.'||relname)) as i_size
postgres-#     ,n_live_tup
postgres-#     ,n_dead_tup
postgres-#     ,trunc(n_dead_tup/(n_live_tup*0.01),2) as k
postgres-#     ,last_autovacuum 
postgres-#     ,(select relname from pg_class c where c.oid=(select cc.reltoastrelid from pg_class cc where  cc.relname=t.relname)) as toast
postgres-# from pg_stat_all_tables t 
postgres-# where 
postgres-#     schemaname not in('pg_catalog','information_schema') 
postgres-#     and n_live_tup > 0 
postgres-# order by size desc,k ;

 name | size | p_size | total_size | i_size | n_live_tup | n_dead_tup | k | last_autovacuum | toast 
------+------+--------+------------+--------+------------+------------+---+-----------------+-------
(0 rows)

postgres=# create table t1(id1 int,id2 int,id3 int, sss text);
CREATE TABLE

postgres=# insert into t1 (select s.id,s.id,s.id,repeat(s.id::text,s.id) from
generate_series(1,100000) as s(id));
INSERT 0 100000

postgres=# select                                                            
    (schemaname||'.'||relname) as name
    ,pg_relation_size(schemaname||'.'||relname) as size
    ,pg_size_pretty(pg_relation_size(schemaname||'.'||relname)) as p_size
    ,pg_size_pretty(pg_total_relation_size(schemaname||'.'||relname)) as total_size
    ,pg_size_pretty(pg_indexes_size(schemaname||'.'||relname)) as i_size
    ,n_live_tup
    ,n_dead_tup
    ,trunc(n_dead_tup/(n_live_tup*0.01),2) as k
    ,last_autovacuum 
    ,(select relname from pg_class c where c.oid=(select cc.reltoastrelid from pg_class cc where  cc.relname=t.relname)) as toast
from pg_stat_all_tables t 
where 
    schemaname not in('pg_catalog','information_schema') 
    and n_live_tup > 0 
order by size desc,k ;

          name           |   size    | p_size | total_size | i_size  | n_live_tup | n_dead_tup |  k   |        last_autovacuum        |     toast      
-------------------------+-----------+--------+------------+---------+------------+------------+------+-------------------------------+----------------
 pg_toast.pg_toast_16384 | 294215680 | 281 MB | 284 MB     | 3560 kB |     161151 |          0 | 0.00 | 2021-10-29 09:11:38.107185+00 | 
 public.t1               |  43196416 | 41 MB  | 325 MB     | 0 bytes |     100000 |          0 | 0.00 | 2021-10-29 09:11:29.703272+00 | pg_toast_16384
(2 rows)

postgres=# \d pg_toast.pg_toast_16384

TOAST table "pg_toast.pg_toast_16384"
   Column   |  Type   
------------+---------
 chunk_id   | oid
 chunk_seq  | integer
 chunk_data | bytea
Owning table: "public.t1"
Indexes:
    "pg_toast_16384_index" PRIMARY KEY, btree (chunk_id, chunk_seq)
...
Рейтинг: 0 / 0
Не могу найти схему pg_toast
    #40108041
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Maxim Boguk#22389827]

Неправильно ищете 20 раз подряд ).

select * from pg_namespace;
Вот так она есть
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
key_words=# select * from pg_namespace;
  oid  |        nspname         | nspowner |               nspacl                
-------+------------------------+----------+-------------------------------------
    99 | pg_toast               |       10 | 
    11 | pg_catalog             |       10 | {postgres=UC/postgres,=U/postgres}
  2200 | public                 |       10 | {postgres=UC/postgres,=UC/postgres}
 13111 | information_schema     |       10 | {postgres=UC/postgres,=U/postgres}
 24718 | блок_чужих_расширений  |       10 | 
 26964 | блок_архив_слов_статей |       10 | 
 70083 | тексты_на_de           |       10 | 
 70084 | тексты_на_en           |       10 | 
 70085 | тексты_на_fr           |       10 | 
 70086 | тексты_на_indonez      |       10 | 
 70098 | тексты_на_tr           |       10 | 
 70099 | тексты_на_ukr          |       10 | 
 70236 | яндекс_wordstat        |       10 | 
 70237 | яндекс_поиск           |       10 | 
 70238 | запросы_из_локал_сайт  |       10 | 
 26966 | роботы_и_автоматизация |       10 | 
 70239 | таблицы_доп            |       10 | 
 88243 | html_log               |       10 | 
 90524 | git_создание_файлов    |       10 | 
(19 строк)



А вот так её нет:
...
Рейтинг: 0 / 0
Не могу найти схему pg_toast
    #40108043
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
toast имеют relkind='t' а не 'r' а вы в pg_class небось 'r' искали
Выводил все что было. Но по факту выводятся только первые 3:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
п_массив_text[5]:=CASE 
			+		WHEN п_record_2.relkind='r' THEN 'r = обычная таблица (Relation)'
			+		WHEN п_record_2.relkind='i' THEN 'i = индекс (Index)'
			+		WHEN п_record_2.relkind='S' THEN 'S = последовательность (Sequence)'
					WHEN п_record_2.relkind='t' THEN 't = таблица TOAST'
					WHEN п_record_2.relkind='v' THEN 'v = представление (View)'
					WHEN п_record_2.relkind='m' THEN 'm = материализованное представление (Materialized view)'
					WHEN п_record_2.relkind='c' THEN 'c = составной тип (Composite type)'
					WHEN п_record_2.relkind='f' THEN 'f = сторонняя таблица (Foreign table)'
					WHEN п_record_2.relkind='p' THEN 'p = секционированная таблица (Partitioned table)'
					WHEN п_record_2.relkind='I' THEN 'I = секционированный индекс (partitioned Index)'
				else 
					' тип хранимого объекта не определён '
				end;
...
Рейтинг: 0 / 0
Не могу найти схему pg_toast
    #40108046
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О,

Уж сколько раз твердили миру - любые админские задачи только через psql
С глюками и странным поведением GUI на таких вещах - вам тут вряд ли кто то поможет.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Не могу найти схему pg_toast
    #40108047
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk
О-О-О,

Уж сколько раз твердили миру - любые админские задачи только через psql
С глюками и странным поведением GUI на таких вещах - вам тут вряд ли кто то поможет.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


А , вот теперь понятно. Просто я проверял и в DBeawer и PGAdmin4 ни там ни там не было доступа к этой схеме.

Теперь понял.
...
Рейтинг: 0 / 0
Не могу найти схему pg_toast
    #40108055
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Guzya,

Спасибо за код.
Буду его крутить и проверять, почему все же нет данных по TOAST.
Ваш пример кода поможет как построчно проверять.

Там вообще все странно. По таблице пишет 0 кб, по индексам пишет 4 Мб, а индексот то у меня по этой таблице и нет.
В общем ерунда какая то.

Вот отчет по этой таблице:
Код: sql
1.
2.
ко-во блоков   размер план, Мб	  размер факт (всего), b         размер tab (факт), b	 размер ind (факт), b    строк в файле	 живых строк  мертвых строк
  1	                0.01 Мб	          4194304	                0                       4194304	                 1	       1            0
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не могу найти схему pg_toast
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]