Dynamodb плохая производительность чтения - PullRequest
0 голосов
/ 24 января 2019

В эти дни я тестировал производительность Dynamodb и разочаровался в производительности.

Я использовал команду query только для ключа раздела без каких-либо условий фильтрации. Это означает, что он просто читает индекс и возвращает.

dynamodb.query(
    TableName='test-table',
    ReturnConsumedCapacity='TOTAL',
    KeyConditionExpression='tid = :tid',
    Limit=5000,
    ExpressionAttributeValues={
        ':tid': {'N': '9999999'},
    }
)

---------- Part of Response ----------
{
    .
    .
    .
    "Count": 5000,
    "ScannedCount": 5000,
    "LastEvaluatedKey": {
        "tid": {
            "N": "9999999"
        },
        "uid": {
            "N": "985377"
        }
    },
    "ConsumedCapacity": {
        "TableName": "sam-push-test",
        "CapacityUnits": 110.5
    }
}

Требуется около 0,5 сек. Он протестирован в AWS Lambda (1024 памяти), расположенном в том же регионе, что и Dynamodb.

Мне любопытно, что плохая работа - это нормальная ситуация, или я должен что-то пропустить.

По-видимому, AWS говорит о том, что Dynamodb обеспечивает производительность в одну цифру в миллисекундах.

Amazon DynamoDB - это база данных ключей и документов, которая обеспечивает производительность в несколько десятков миллисекунд в любом масштабе.

Кроме того, показатель query-latency в консоли Dynamodb показывает 100-150 мс в моем тесте.

Как это измеряется?

1 Ответ

0 голосов
/ 24 января 2019

При чтении или записи одного элемента вы должны ожидать производительность в одну цифру миллисекунды Но при запросе страницы из 5000 элементов (как кажется в вашем случае) нормально видеть ~ 100 мс.

Конечно, вы также должны убедиться, что клиент находится не слишком далеко от конечной точки DynamoDB. Круговое путешествие вокруг света может легко добавить более 100 мс.

...