Выбор LIMIT 1 занимает много времени на postgresql - PullRequest
0 голосов
/ 29 апреля 2018

Я выполняю простой запрос к базе данных localhost PostgreSQL, и он выполняется слишком долго:

SELECT * FROM features LIMIT 1;

Я ожидаю, что такой запрос будет завершен за доли секунды, так как в основном он говорит: "заглянуть в любую точку базы данных и выбрать одну строку". Или нет?

  • размер таблицы составляет 75 ГБ с расчетным числом строк 1,84405e + 008
  • Я единственный пользователь базы данных
  • сервер базы данных был только что запущен, так что я думаю, что ничего не кэшируется в памяти

1 Ответ

0 голосов
/ 29 апреля 2018

Я полностью согласен с @ larwa1n с содержанием, которое он комментирует в вашем посте. Причина здесь, я думаю, в том, что производительность SELECT слишком низкая. С моим опытом, может быть, есть и другие причины. Я перечисляю как ниже:

  • Таблица слишком большая, поэтому давайте добавим WHERE CLAUSE и INDEX
  • Производительность вашего сервера / диска слишком низкая.
  • Другой процесс занимает больше всего ресурсов.
  • Еще одна причина, возможно, связана с задачей обслуживания, давайте еще раз проверим, работает ли autovacuum? Если нет, проверьте, является ли эта таблица уже vacuum? Если нет, то сделайте vacuum full для этой таблицы. Иногда, когда вы выполняете много операций вставки / обновления / удаления на большой таблице без vacuum, таблица будет сохранена в фрагментированном блоке диска, что в запросе займет больше времени.

Надеюсь, этот ответ поможет вам выяснить окончательную причину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...