Здравствуйте учасники форума.
Отдельное спасибо владельцам и активным учасникам, очень хороший сайт и хорошо выложена информация.
А теперь к самому вопросу.
Я занялся написанием базы для полнотексного поиска.
В итоге. База создана. Таблицы созданы. Данные загнал в таблицы. Все хорошо.
Создал индекс командой "CREATE INDEX text_idx ON inform USING gin (to_tsvector('russian', text));"
Если индекс не создать, вообще не будет работать полнотексный поиск.
В итоге все очень хорошо работает, текст ищет очень быстро среди 1 миллиона записей в таблице.
Вот вроде бы и счастье наступило.
Но, появился вопрос - что будет, если данные будут Обновляться, Удаляться, Создаваться новые записи.
Сейчас я провожу у себя тесты, но мне не хватает теории о полнотекстном поиске и именно об индексах полнотекстных.
Что может происходить, если идет постоянный SELECT, а при этом идет постоянное обновление, удаление, редактирование?
Во время изменения данных в
Во время изменения данных в таблицах, индексы до(пере)страиваются автоматически.
Для более эффективного сбора статистики по таблицам в PostgreSQL работает процесс autovacuum.
Словом, по идее проблем быть не должно, но возможно, что когда-нибудь, если вы заметите. что ощутимо упала производительность, будет не лишним прогнать VACUUM ANALYZE на те таблицы, где часто происходит изменение данных.
Разве он будет автоматом
Разве он будет автоматом обновлять индекс to_tsvector ?
А чем индексы полнотекстового
А чем индексы полнотекстового поиска отличаются от других прочих?
Вроде как ничем с точки зрения их поддержки
Провожу тесты. В секунду
Провожу тесты.
В секунду вставляется 30 новых записей.
Читается 10 запросов.
Все это длится на протяжении целого дня.
В итоге скорость поиска среди более 2 мил записей меньше секунды.
Индексы работают хорошо. Автовакуум примерно каждые 10 мин обновляет индекс.
Увеличить количество вставки новых данных не проблема, к сожалению пока нет возможности проверки на более большом количистве SELECT.
Статистика па данным:
Размер таблицы page: 42 MB
Размер таблицы page с индексами: 424 MB
Как видим индексы жрут очень много. Хотя в этой таблице 5 полей и у каждого поля свой индекс.
Но, главное скорость.
А как правльней? сначало
А как правльней? сначало делать REINDEX, а потом VACUUM FULL ANALYZE?
или наоборот?
Я так понимаю, что ANALYZE
Я так понимаю, что ANALYZE как раз перестраивает индексы с учётом собранной статистики по таблицам.