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

Делаю dump базы с чисткой крупных таблиц которые в этом дампе не важны.
Размер таблиц определяю выборкой из базы:

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT relname AS name, pg_size_pretty(pg_total_relation_size(relname::text)) as total_relation_size
      FROM pg_class 
      WHERE 
	 relnamespace = '2200'    
	 and relkind = 'r'
      ORDER BY relpages DESC;



но таким способом возвращается размер таблиц без учета хранящихся в них "больших объектов", хотя в pg_largeobject хранится несколько гигов информации.
Хочу определить таблицы в которых эти данных хранятся.
...
Рейтинг: 0 / 0
Определение таблиц в которых хранятся "большие объекты"
    #39923226
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D0KX
Доброго дня.
Помогите разобраться как найти таблицы в которых хранятся "большие объекты".

Делаю dump базы с чисткой крупных таблиц которые в этом дампе не важны.
Размер таблиц определяю выборкой из базы:

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT relname AS name, pg_size_pretty(pg_total_relation_size(relname::text)) as total_relation_size
      FROM pg_class 
      WHERE 
	 relnamespace = '2200'    
	 and relkind = 'r'
      ORDER BY relpages DESC;



но таким способом возвращается размер таблиц без учета хранящихся в них "больших объектов", хотя в pg_largeobject хранится несколько гигов информации.
Хочу определить таблицы в которых эти данных хранятся.


LO могут вообще не быть привязаны ни к какой таблице... это независимые объекты вообще.
Аналогичным образом один и тот же LO может к нескольким таблицам одновременно привязан.
Так что ваша постановка вопроса не совсем корректная именно потому что LO не хранятся "в таблице", в таблице может быть ссылка на какие то LO.
...
Рейтинг: 0 / 0
Определение таблиц в которых хранятся "большие объекты"
    #39923261
gav21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D0KX,
на LOB ссылаются из полей с типом "OID"
попробуйте найти таблицы с типом oid, чтото вроде:
select table_name,column_name from information_schema.columns where data_type = 'oid' and table_name not like 'pg_%' and table_name not like '_pg%';
...
Рейтинг: 0 / 0
Определение таблиц в которых хранятся "большие объекты"
    #39923523
entrypoint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D0KX,

автор32.1. Введение
Все большие объекты хранятся в одной системной таблице с именем pg_largeobject. Для каждого большого объекта также имеется запись в системной таблице pg_largeobject_metadata. Большие объекты можно создавать, изменять и удалять, используя API чтения/записи, подобный стандартному API для работы с файлами.
https://postgrespro.ru/docs/postgresql/9.5/lo-intro

автор34.1. Introduction
All large objects are stored in a single system table named pg_largeobject. Each large object also has an entry in the system table pg_largeobject_metadata. Large objects can be created, modified, and deleted using a read/write API that is similar to standard operations on files.
https://www.postgresql.org/docs/10/lo-intro.html
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Определение таблиц в которых хранятся "большие объекты"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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