Транзакция журнала базы данных PostgreSQL

Я студент последнего курса колледжа, и я делаю свою диссертацию прямо сейчас. Мое название — «Предложение по индексу на основе анализа журнала». Этот проект проанализирует журнал транзакций PostgreSQL, чтобы дать рекомендации по индексу для тестируемой базы данных.

В этом исследовании будет разработан инструмент рекомендации индекса путем анализа атрибута, к которому часто обращаются (с помощью инструкции SELECT).

Но я обнаружил, что трудно найти файл журнала PostgreSQL. Мой вопрос: где я могу найти набор данных транзакций журнала PostgreSQL? Или, может быть, другой набор данных транзакций журнала базы данных?

Но SELECT не регистрируется в журнале транзакций. Я не хочу вас расстраивать, но разве вы не должны изучить основы, прежде чем писать диссертацию?

Laurenz Albe 20.02.2019 08:18

Вам придется где-то подключиться к оптимизатору запросов, но это непростая задача.

Laurenz Albe 20.02.2019 08:22

Вы говорите о журнал упреждающей записи или журнал сервера? WAL (также известный как журнал транзакций) не записывает запросы, но журнал сервера будет (если вы скажете ему). Если вам просто нужна запись операторов SELECT, то pg_stat_statements, вероятно, является лучшей отправной точкой, но точный синтаксический анализ запросов требует гораздо больше работы, чем фактический анализ...

Nick Barnes 20.02.2019 11:03

Я бы начал с чтения всех существующих вопросов StackOverflow об оптимизации запросов Postgres и/или производительности. Есть некоторые закономерности, которые необходимо обнаружить.

wildplasser 20.02.2019 12:12

@NickBarnes Я говорю о журнале упреждающей записи. Да, трудно разобрать файл журнала. Я уже пытаюсь разобрать журнал, используя регулярное выражение. Какой тип синтаксического анализа может подойти для анализа файла журнала?

wdwilhelmina 21.02.2019 03:40

@LaurenzAlbe Я когда-либо находил инструкцию SELECT в журнале PostgreSQL. Но оператор SELECT больше не появляется.

wdwilhelmina 21.02.2019 03:41

@wildplasser спасибо. Знаете ли вы, где я могу получить набор данных файла журнала postgreSQL, который можно загрузить?

wdwilhelmina 21.02.2019 03:43

Используйте случаи оптимизации из SO (или DBA@SO) в качестве учебного материала и самостоятельно извлекайте файлы журналов.

wildplasser 21.02.2019 09:51
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
8
1 736
1

Ответы 1

Вы путаете журнал транзакций (WAL) и обычный текстовый файл журнала.

Последний содержит операторы (если так настроена конфигурация), а журнал транзакций вообще не содержит операторов, а только бинарную информацию о том, что изменилось в каком блоке.

Вы не сможете рекомендовать индекс, просто взглянув на запрос, я тоже не могу этого сделать.

У меня есть предложение для вас: если вы хотите написать инструмент, который предлагает индексы, он должен принимать вывод EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT /* your query */ в качестве входных данных.

Кроме того, инструмент должен быть подключен к базе данных для запроса таблицы и метаданных индекса (и, возможно, статистики). Это делает вас зависимым от версии базы данных, потому что метаданные могут меняться (и меняются — см. секционированные таблицы), но это не будет вас так сильно волновать в дипломной работе.

Задача пока непростая (оптимизация запросов — это ИИ), но тогда у вас есть хотя бы шанс.

Я новичок в PostgreSQL. Я уже установил свой log_statement: ON в postgresql.conf. но я все еще не могу найти оператор SELECT в своем журнале. какую конфигурацию я могу сделать, чтобы перепутать журнал транзакций и обычный текстовый файл журнала?

wdwilhelmina 27.02.2019 03:45

Можете ли вы объяснить больше о том, как использовать выходные данные EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) в качестве входных данных?

wdwilhelmina 27.02.2019 03:48

Конечно, вы получаете план выполнения таким образом.

Laurenz Albe 27.02.2019 05:17

Другие вопросы по теме