#postgresql #heroku
Вопрос:
У меня есть таблица базы данных с 14 миллионами строк в экземпляре Heroku postgres standard-0.
Поскольку heroku дает мне очень ограниченные показатели производительности, я пытаюсь понять, что я могу сделать — кроме как отойти от Heroku, чтобы понять узкое место. Я чувствую, что большинство высших планов на Heroku завышены, и я предпочел бы отказаться от них, чем модернизировать.
Данные состоят из 3 столбцов, но здесь уместны следующие:
data_hash
(изменение символов — и хэш MD5, однозначно определяющий источник данных, 32 символа)data_retrieval_date
(метка времени без часового пояса)data
(jsonb)
Этот data
столбец составляет на сегодняшний день основную часть общего объема данных (55 Гб) таблицы. на data_hash
и есть указатель data_retrieval_date
.
Я использую эту структуру, чтобы иногда анализировать последние изменения для одних и тех же записей data_hash
с течением времени. Но я обычно фильтрую эти данные только по самой последней записи для каждого хэша данных.
На heroku приведенный ниже запрос занимает 126 секунд:
SELECT DISTINCT
data_hash,
data_retrieval_date
FROM table
order BY data_hash, data_retrieval_date
LIMIT 100
На локальной копии на моем ноутбуке это занимает менее 5 секунд.
Комментарии:
1. Пожалуйста
EXPLAIN (analyze, buffers)
, проверьте обе системы.