# Ограничения

В данном разделе приведена информация о существующих ограничениях при
использовании Picodata.

## Кластер {: #cluster }

### Объем данных в кластере {: #size }

Без ограничений. Фактический предел определяется [движком
хранения](../overview/glossary.md#db_engine) (для `memtx` — объемом
доступной ОЗУ, для `vinyl` — доступным местом на диске).

См. также [Распределение имеющихся ресурсов](../admin/sizing.md#sizing_memtx)

### Масштабирование кластера {: #scaling }

Максимальное количество инстансов в кластере — 10 000.

### Количество бакетов {: #buckets }

Не ограничено. По умолчанию, в кластере используется 3000 бакетов. Данный
параметр задается один раз перед бутстрапом кластера и в дальнейшем остается
неизменным. Число бакетов определяет точность/гранулярность перебалансировки
данных при изменении состава узлов в кластере.

См. также:

- [Хранение данных](../overview/description.md#data_storage)

### Количество соединений {: #connections }

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

### Количество пользователей и ролей {: #users_and_roles }

128 пользователей или ролей. В кластере изначально имеется 6 служебных
пользователей, поэтому для добавления остается 122 пользователя или
роли.

### Фактор репликации {: #replication_factor }

Максимальный доступный пользователю фактор репликации (количество реплик в
репликасете) — 31 (32 минус одно значение, зарезервированное для работы
алгоритма Raft).

## Таблицы и индексы {: #table }

### Размер таблицы {: #table_size }

Итоговый максимальный размер всех таблиц фактически определяется в
`memtx_memory`, который в свою очередь ограничен общим размером
свободной памяти.

### Длина имени {: #name_length }

Длина имени индекса, имени таблицы или имени пользователя — 65 000.

### Количество частей в индексе {: #index_parts }

Для TREE-индексов или HASH-индексов максимальное количество – 255
частей. Для RTREE-индексов максимальное количество – 1, но это поля типа
`ARRAY` (массив) с размерностью до 20. Для BITSET-индексов максимальное
количество – 1.

### Количество индексов в таблице {: #indices }

Максимальное количество индексов в таблице — 128.

### Количество колонок в таблице {: #columns }

Максимальное количество колонок в таблице — 22 500.

### Количество байтов в кортеже {: #bytes }

Максимальное количество байтов в кортеже примерно равно
`memtx_max_tuple_size` или `vinyl_max_tuple_size` (с ресурсами
метаданных около 20 байтов на кортеж, которые добавляются к полезным
байтам). Значение `memtx_max_tuple_size` или `vinyl_max_tuple_size` по
умолчанию составляет 1 048 576.

### Количество байтов в индекс-ключе {: #bytes_in_key }

Если поле в кортеже может содержать миллион байтов, то индекс-ключ также
может содержать миллион байтов, поэтому максимальное количество
определяется такими факторами, как количество байтов в кортеже, а не
параметрами индекса.

### Количество строк/полей в кортеже {: #strings }

Не ограничено.

### Количество таблиц {: #tables }

Максимальное количество таблиц – 65 000.

## Запросы {: #query }

### Длина SQL-запроса {: #statement }

Максимальная длина SQL-запроса — 1 000 000 000 символов.

### Длина имени при подстановке {: #wildcard }

Максимальная длина имени, используемого вместе с подстановочными
знаками – 65 000.

### Глубина дерева выражений {: #expression_tree }

Максимальная глубина вложения выражений — 200.

### Количество запросов SELECT в одной команде {: #selects }

Максимальное количество запросов `SELECT` в одной команде — 50.

### Количество аргументов для SELECT {: #select_args }

Максимальное количество аргументов для запроса `SELECT` — 127.

### Кэш исполнения запросов {: #sql_cache }

Максимальный размер SQL-кэша — 2 048 000 байт.

### Длина шаблона для LIKE/ILIKE {: #like }

Максимальная длина шаблона для использования с операторами `LIKE` и
`ILIKE` — 50 000 байт.

### Вложенные команды при исполнении SQL {: #triggers }

Максимальная количество срабатываний вызовов дополнительных команд
(триггеров) при выполнении SQL-запроса — 1000.


