Перейти к содержанию

Data Query Language

Data Query Language — команды языка SQL, читающие данные (как сгенерированные, так и уже находящиеся в таблицах). Для чтения данных из таблиц используется команда SELECT.

Синтаксис

with select values OPTION ( read_preference = LEADER REPLICA ANY sql_motion_row_max sql_vdbe_opcode_max = unsigned , )

Параметры

  • SQL_VDBE_OPCODE_MAX — ограничение на максимальное количество инструкций при исполнении локального плана (VDBE) на узле кластера.

  • SQL_MOTION_ROW_MAX — ограничение на максимальное число строк в результирующей виртуальной таблице, собирающей результаты отдельных локальных запросов.

  • READ_PREFERENCE — предпочтительная стратегия чтения данных с репликасета. Допустимые значения:

    • LEADER (по умолчанию) — чтение производится только с лидеров репликасетов. Это безопасная и рекомендуемая стратегия, так как vshard контролирует перемещение бакетов только на лидерах. В неблокирующем SQL чтение всегда выполняется с лидеров, другие значения опции вернут ошибку.
    • ANY — чтение производится с ближайшей доступной реплики, а при её отсутствии — с лидера. Важно: во время выполнения DQL-запросов не должно быть пишущей нагрузки и изменений топологии кластера. Это помогает избежать перемещения бакетов, которое может привести к неконсистентным результатам. Использование этой стратегии помогает лучше утилизировать ресурсы.
    • REPLICA — чтение производится только с ближайшей доступной реплики, а при её отсутствии запрос возвращает ошибку. Требования к отсутствию пишущей нагрузки и изменений топологии аналогичны ANY.