Время для запросов на чтение неожиданно подскочило в PostgreSQL - PullRequest
0 голосов
/ 01 августа 2020

Я столкнулся с проблемой при чтении данных из базы данных (PostgreSQL версия = 11.6). До вчерашнего дня запросы на чтение работали нормально. Но теперь открытие определенной c таблицы занимает слишком много времени, все остальные таблицы работают нормально. Я использую TablePlus в качестве клиента для подключения к RDS. Выполнение простого запроса на выборку занимает много времени

SELECT * FROM "public"."scraped_accounts" ORDER BY "id" LIMIT ? OFFSET ?;

ГРАФИК ИСПОЛЬЗОВАНИЯ ЦП ДЛЯ ВЫШЕГО ЗАПРОСА

Технические характеристики таблицы

  • В таблице всего 5737 записей.
  • Он размещен на экземпляре db.m4.large на AWS.
  • Нет конкретных c индексов, кроме индекса первичного ключа на идентификатор столбца и использует алгоритм BTREE

Структура таблицы приведена ниже

CREATE TABLE "public"."scraped_accounts" (
    "id" int4 NOT NULL DEFAULT nextval('scraped_accounts_id_seq'::regclass),
    "screen_name" text NOT NULL,
    "name" text NOT NULL,
    "url" text,
    "description" text,
    "location" text,
    "score" numeric NOT NULL DEFAULT 0,
    "created_at" timestamp NOT NULL,
    "scraped_at" timestamp NOT NULL DEFAULT now(),
    "updated_at" timestamp NOT NULL DEFAULT now(),
    "img" text,
    "cover_img" text,
    "interested" _text NOT NULL DEFAULT '{}'::text[],
    "checked" bool DEFAULT false,
    "ignore" bool DEFAULT false,
    "tag" text,
    "sector" text,
    "last" text,
    "total" text,
    "meta_title" text,
    "meta_description" text,
    "meta_keywords" text,
    "name" text,
    "url" text,
    PRIMARY KEY ("id")
);

Я пробовал:

  1. Перезагрузка экземпляра База данных
  2. Экспорт этой конкретной c таблицы и импорт в другой экземпляр базы данных.
  3. Попытка поиска блокировок

Но проблема все равно сохраняется.

Подозреваемые проблемы могут быть связаны с:

  1. Emojis, которые присутствуют в данных. Могут возникнуть проблемы из-за их формата кодирования
  2. Мы запускаем несколько заданий cron на бэкэнде, которые одновременно выполняют запросы INSERT и UPDATE для этой таблицы.

Могут ли указанные выше причины вызвать это проблема?

ГРАФИКИ ОБЛАЧНЫХ ЧАСОВ ЗА ПОСЛЕДНЮЮ НЕДЕЛЮ

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 августа 2020

Возможные решения -

  1. Если столбец Interested, содержащий массив значений text, станет слишком большим, ваши запросы будут замедляться.
  2. Повторная проверка для взаимоблокировок -> https://www.citusdata.com/blog/2018/02/15/when-postgresql-blocks/
  3. Я не уверен, могут ли огромные текстовые значения замедлить выполнение ваших запросов, но все равно стоит проверить. Попробуйте запустить это ->

SELECT id, description, LENGTH(description) FROM scraped_accounts WHERE description IS NOT NULL ORDER BY LENGTH DESC

Это должно дать вам представление о размере ваших текстовых значений.

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