---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/faq/errors.md?version=v26.1
  - https://ydb.tech/docs/ru/faq/errors.md?version=v26.1
  - href: ru/faq/errors.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/faq/errors.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

<!-- source: ru/faq/_includes/errors.md -->
# Ошибки

## Почему может возникать ошибка «Status: OVERLOADED Error: Pending previous query completion» в C++ SDK?

Q: При запуске двух запросов, пытаюсь получить ответ из фьючера от второго из них. Получаю: `Status: OVERLOADED Why: <main>: Error: Pending previous query completion`.

A: Сессия в SDK однопоточная. Если нужно параллельно использовать несколько запросов, нужно создавать несколько сессий.

## Что делать, если я часто получаю ошибку «Transaction locks invalidated»? {#locks-invalidated}

Обычно при получении этой ошибки следует повторить выполнение транзакции, так как YDB использует оптимистичные блокировки. Если такая ошибка возникает часто, это означает, что в транзакции читается большое количество строк или, что много транзакций конкурируют за одни и те же «горячие» строки. Имеет смысл просмотреть запросы, выполняющиеся в транзакции и определить, не читают ли они лишние строки.

## Почему возникает ошибка «Exceeded maximum allowed number of active transactions»? {#exceed-number-transactions}

В логике на клиентской стороне надо стараться держать как можно более короткие транзакции.

В рамках сессии разрешено не более 10 активных транзакций. При старте транзакции нужно использовать либо коммит-флаг для автокоммита, либо явный коммит/роллбек.

## Что делать, если при запросе я получаю ошибку «Datashard: Reply size limit exceeded»? {#reply-size-exceeded}

Данная ошибка означает, что при выполнении запроса с одного из участвующих в нем даташардов была попытка вернуть более 50 МБ данных, что превышает допустимый лимит.

Рекомендации:

* Общая рекомендация — уменьшить объем данных, обрабатываемых в транзакции.
* Если выполняется операция `Join`, стоит убедиться, что она выполняется способом [Index lookup Join](https://ydb.tech/docs/ru/faq/yql.md?version=v26.1#index-lookup-join).
* Если осуществляется простая выборка, стоит убедиться, что она делается по ключам, или добавить `LIMIT` в запрос.

## Что делать, если при запросе я получаю ошибку «Datashard program size limit exceeded»? {#program-size-exceeded}

Данная ошибка означает, что размер программы (в сумме со значениями параметров) для одного из даташардов превысил лимит в 50 МБ. Чаще всего это означает попытку записать в таблицы базы более 50 МБ данных в одной транзакции. В качестве записей учитываются все модифицирующие операции в транзакции, такие как `UPSERT`, `REPLACE`, `INSERT`, `UPDATE`.

Необходимо уменьшить суммарных объем записей в одной транзакции. В общем случае не рекомендуется объединять в единую транзакцию запросы, которые логически не требуют транзакционности. В случае добавления/обновления данных батчами, рекомендуется уменьшить размер одного батча до значений, не превышающих нескольких мегабайт.
<!-- endsource: ru/faq/_includes/errors.md -->
