И вот fullscan насилует серверный диск, сервер скрипит и трещит и никакие припарки ему не помогают. А ведь проект уже зрелый, работает давно, и, видать, всех все устраивало. Кроме сервера. Встал вопрос: какие индексы добавлять?
Чтоб вы представляли, бэкенд состоял более чем из 10000 файлов, которые читали и писали в 8 баз разной степени наполненности. Ну еще технический долг, неработающие базы, и все это крутится на продакшене. То есть сломать ну никак нельзя, не простят. В итоге, после пары экспериментов разной степени упоротости я решил делать так:
- располагаем базы по размеру в порядке убывания;
- располагаем таблицы в базах по количеству строк в них в порядке убывания;
- grep-аем все файлы бэкенда в поисках строк с названием таблиц и считываем пять строк до и после искомой:
- отсеиваем мусор;
- по запросам к искомой таблице понимаем, какие нужны индексы;
- добавляем их.
Работенка та еще была. Особенно, когда пошли таблицы без префиксов и со стандартными именами, дававшими сотни ложных срабатываний. Но базе это помогло, нагрузка на нее упала раз в 6.