Я студент последнего курса колледжа, и я делаю свою диссертацию прямо сейчас. Мое название — «Предложение по индексу на основе анализа журнала». Этот проект проанализирует журнал транзакций PostgreSQL, чтобы дать рекомендации по индексу для тестируемой базы данных.
В этом исследовании будет разработан инструмент рекомендации индекса путем анализа атрибута, к которому часто обращаются (с помощью инструкции SELECT).
Но я обнаружил, что трудно найти файл журнала PostgreSQL. Мой вопрос: где я могу найти набор данных транзакций журнала PostgreSQL? Или, может быть, другой набор данных транзакций журнала базы данных?
Вам придется где-то подключиться к оптимизатору запросов, но это непростая задача.
Вы говорите о журнал упреждающей записи или журнал сервера? WAL (также известный как журнал транзакций) не записывает запросы, но журнал сервера будет (если вы скажете ему). Если вам просто нужна запись операторов SELECT, то pg_stat_statements, вероятно, является лучшей отправной точкой, но точный синтаксический анализ запросов требует гораздо больше работы, чем фактический анализ...
Я бы начал с чтения всех существующих вопросов StackOverflow об оптимизации запросов Postgres и/или производительности. Есть некоторые закономерности, которые необходимо обнаружить.
@NickBarnes Я говорю о журнале упреждающей записи. Да, трудно разобрать файл журнала. Я уже пытаюсь разобрать журнал, используя регулярное выражение. Какой тип синтаксического анализа может подойти для анализа файла журнала?
@LaurenzAlbe Я когда-либо находил инструкцию SELECT в журнале PostgreSQL. Но оператор SELECT больше не появляется.
@wildplasser спасибо. Знаете ли вы, где я могу получить набор данных файла журнала postgreSQL, который можно загрузить?
Используйте случаи оптимизации из SO (или DBA@SO) в качестве учебного материала и самостоятельно извлекайте файлы журналов.

Вы путаете журнал транзакций (WAL) и обычный текстовый файл журнала.
Последний содержит операторы (если так настроена конфигурация), а журнал транзакций вообще не содержит операторов, а только бинарную информацию о том, что изменилось в каком блоке.
Вы не сможете рекомендовать индекс, просто взглянув на запрос, я тоже не могу этого сделать.
У меня есть предложение для вас: если вы хотите написать инструмент, который предлагает индексы, он должен принимать вывод EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT /* your query */ в качестве входных данных.
Кроме того, инструмент должен быть подключен к базе данных для запроса таблицы и метаданных индекса (и, возможно, статистики). Это делает вас зависимым от версии базы данных, потому что метаданные могут меняться (и меняются — см. секционированные таблицы), но это не будет вас так сильно волновать в дипломной работе.
Задача пока непростая (оптимизация запросов — это ИИ), но тогда у вас есть хотя бы шанс.
Я новичок в PostgreSQL. Я уже установил свой log_statement: ON в postgresql.conf. но я все еще не могу найти оператор SELECT в своем журнале. какую конфигурацию я могу сделать, чтобы перепутать журнал транзакций и обычный текстовый файл журнала?
Можете ли вы объяснить больше о том, как использовать выходные данные EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) в качестве входных данных?
Конечно, вы получаете план выполнения таким образом.
Но
SELECTне регистрируется в журнале транзакций. Я не хочу вас расстраивать, но разве вы не должны изучить основы, прежде чем писать диссертацию?