×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.8.12. Анализ использования индексов

Хотя индексы в Digital Q.DataBase не требуют обслуживания или настройки, все же важно проверять, какие индексы фактически используются при реальной нагрузке запросов. Изучение использования индексов для отдельного запроса выполняется с помощью команды EXPLAIN команды; ее применение для этой цели описано в Раздел 2.11.1. Также можно собрать общую статистику об использовании индексов на работающем сервере, как описано в Раздел 3.12.2.

Сформулировать универсальный алгоритм для определения набора необходимых индексов довольно сложно. Ряд типичных случаев был рассмотрен в примерах в предыдущих разделах. Часто требуется проведение множества экспериментов. В оставшейся части данного раздела приведены некоторые рекомендации по этому вопросу:

  • Всегда выполняйте ANALYZE в первую очередь. Эта команда собирает статистику о распределении значений в таблице. Данная информация необходима для оценки количества строк, возвращаемых оператором SELECT, что требуется планировщику запросов для назначения реалистичной стоимости каждому возможному плану выполнения. В отсутствие реальной статистики принимаются значения по умолчанию, которые почти наверняка окажутся неточными. Анализ использования индексов приложением без предварительного выполнения команды ANALYZE поэтому бессмыслен. См. Раздел 3.9.1.3 и Раздел 3.9.1.6 для получения дополнительной информации.

  • Используйте реальные данные для проведения тестов. Использование тестовых данных для настройки индексов позволит определить, какие индексы необходимы именно для этого набора данных, но не более того.

    Использование очень малых наборов тестовых данных может привести к ошибочным выводам. В то время как выборка 1000 из 100 000 строк является подходящим случаем для использования индекса, выборка 1 из 100 строк — вряд ли, поскольку 100 строк, скорее всего, помещаются на одной дисковой странице, и ни один план не будет эффективнее последовательного сканирования одной дисковой страницы.

    Также следует проявлять осторожность при формировании тестовых данных, что зачастую неизбежно, если приложение еще не находится в промышленной эксплуатации. Слишком однородные, полностью случайные или вставляемые в отсортированном порядке значения искажают статистику, из-за чего она перестает соответствовать распределению реальных данных.

  • В случаях, когда индексы не используются, для целей тестирования может быть полезно принудительно активировать их применение. Существуют параметры времени выполнения, позволяющие отключать различные типы планов (см. Раздел 3.4.7.1). Например, отключение последовательного сканирования (enable_seqscan) и соединений вложенным циклом (enable_nestloop), которые являются наиболее базовыми планами, заставит систему использовать другой план запроса. Если система по-прежнему выбирает последовательное сканирование или соединение вложенным циклом, то, вероятно, существует более фундаментальная причина, по которой индекс не используется; например, условие запроса не соответствует индексу. (Информация о том, какие типы запросов поддерживают те или иные типы индексов, приведена в предыдущих разделах).

  • Если принудительное использование индекса действительно приводит к его применению, возможны два варианта: либо система права и использование индекса действительно нецелесообразно, либо стоимостные оценки планов запросов не соответствуют действительности. Следовательно, следует измерить время выполнения запроса с индексами и без них. EXPLAIN ANALYZE может быть полезна в данном случае.

  • Если окажется, что стоимостные оценки неверны, также возможны два варианта. Общая стоимость вычисляется как произведение стоимости обработки одной строки для каждого узла плана на оценку селективности этого узла. Стоимость, рассчитанную для узлов плана, можно скорректировать с помощью параметров времени выполнения (описанных в Раздел 3.4.7.2). Неточная оценка селективности обусловлена недостатком статистических данных. Эту ситуацию можно исправить путем настройки параметров сбора статистики (см. ALTER TABLE).

    Если скорректировать стоимости до адекватных значений не удастся, возможно, придется прибегнуть к явному принудительному использованию индексов. Также рекомендуется обратиться к Digital Q.DataBase разработчикам для анализа данной проблемы.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению