Кажется, что наша база данных повреждена, обычно она использует около 1-2% процессорного времени, но если мы запустим некоторые дополнительные серверные службы, выполняющие запросы UPDATE и INSERT для таблицы 10M строк (около 1 запроса в 3 секунды), все будетчерт возьми (включая увеличение загрузки процессора с 2% до 98%).
Мы решили отладить происходящее, запустить VACUUM и ANALYZE, чтобы узнать, что не так с db, но ...
production=# ANALYZE VERBOSE users_user;
INFO: analyzing "public.users_user"
INFO: "users_user": scanned 280 of 280 pages, containing 23889 live rows and 57 dead rows; 23889 rows in sample, 23889 estimated total rows
INFO: analyzing "public.users_user"
INFO: "users_user": scanned 280 of 280 pages, containing 23889 live rows and 57 dead rows; 23889 rows in sample, 23889 estimated total rows
ERROR: tuple already updated by self
Мы не смогли завершить АНАЛИЗ ЛЮБЫХ таблиц и не смогли найти никакой информации по этой проблеме.Любые предложения, что может быть не так?
PostgreSQL 9.6.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
Дополнительная информация, запрошенная в комментариях:
Возможно, у вас поврежден pg_class
SELECT * FROM pg_class WHERE relname = 'users_user';
Вывод: https://pastebin.com/WhmkH34U
Итак, первое, что нужно сделать, это выкинуть все остальные сеансы и повторить попытку
Дополнительных нетсеансах, мы выгрузили всю БД на новый тестовый сервер, проблема все еще возникает, нет клиентов, подключенных к этой БД