DynamoDB заполняет пустую таблицу тоннами данных, ограниченных 1000WCU - PullRequest
0 голосов
/ 17 апреля 2020



Я пишу скрипт, который должен заполнить новую таблицу данными в кратчайшие сроки (таблица ~ 650Gb). Ключ раздела (ха sh) отличается во всех записях, поэтому я не могу представить себе лучший ключ. Я установил подготовленный WCU для этой таблицы на 4k.

Когда скрипт работает, 16 независимых потоков с высокой скоростью помещают в таблицу разные данные. Во время выполнения я получаю ProvisionedThroghputException. Графики Cloudwatch показывают, что потребляемый WCU ограничен 1000WCU.

Это может произойти, если все данные помещены в один раздел. Как я понимаю, DynamoDb создаст новый раздел, когда размер данных превысит ограничение в 10 ГБ. Так ли это? Итак, во время этой операции заполнения данных у меня есть только 1 раздел, и предел в 1000WCU понятен.

Я проверил https://aws.amazon.com/ru/premiumsupport/knowledge-center/dynamodb-table-throttled/
Но похоже, что эти предложения применяются к уже заполненным таблицам, и вы пытаетесь добавить туда много новых данных.

Итак, у меня есть 3 вопроса:
1. Как я могу ускорить процесс вставки данных в новую пустую таблицу?
2. Когда DynamoDB решит создать новый раздел?
3. Могу ли я установить минимальное количество разделов (например, 4), чтобы использовать всю мощность подготовленного WCU (4 КБ)?

UPD Cloudwatch график: enter image description here


UPD2 ключ HA SH - длинный номер. На самом деле это не сильно уникально. Но максимальное количество строк с одним и тем же ключом HA SH, но с разными ключами RANGE, равно 2.

1 Ответ

1 голос
/ 17 апреля 2020

Вы не можете вручную указать количество разделов, используемых DDB. Он автоматически обрабатывается за кулисами.

Однако способ его обработки изложен в ссылке, предоставленной F_SO_K.

  • 1 на каждые 10 ГБ данных
  • 1 на каждые 3000RCU и / или 1000WCU.

Если вы подготовили 4000WCU, то у вас должно быть как минимум 4 раздела, и вы должны увидеть, что 4000WCU израсходованы. Особенно учитывая, что вы сказали, что ваш ключ ha sh уникален для каждой записи, вы должны распределять данные равномерно и не запускаться в «горячий» раздел. Облачные часы также показывают выделенную емкость при 4000 Вт / ч?

Если это так, не уверен, что происходит, возможно, придется позвонить AWS.

...