2016-11-14 3 views
1

Этот вопрос касается порогов целевой производительности в хранилище таблиц Azure, которые описаны here. В частности, меня беспокоят 2K-сущности для каждого раздела и 20 тыс. Сущностей в секунду, пороговое значение. Я понимаю, что если вы преодолеете эти пороговые значения, Azure может начать возвращать 500 и 503 ошибки.Какова производительность хранилища таблиц Azure Целевые последствия различных запросов диапазона?

Я думаю, что я могу столкнуться с этим, и я ищу разъяснения о том, как именно эти предметы учитываются. Я понимаю, что если вы выполняете сканирование либо полной таблицы, либо раздела, вы потенциально будете «заряжаться» для каждого объекта, который выполняет Azure, независимо от числа, которое вы возвращаете. Поскольку вы можете записать весь ваш запрос «бюджет» по одному плохо спроектированному запросу таблицы 2000 строк, я хочу убедиться, что я правильно понимаю это.

Для ясности здесь приведена простая таблица и те же данные образца, которые мы можем использовать в следующих нескольких сценариях.

PartitionKey | RowKey | Name 
---------------------------- 
A    1  Alice 
A    2  Bob 
A    3  Candice 
A    4  Dave 
A    5  Eugenia 
B    6  Frank 
B    7  Genevieve 
B    8  Henry 
C    9  Ike 
C    10  Jennifer 

Для каждого из следующих сценариев, я позвоню количеству лиц, которые «заряженные» против Performance Target «бюджета» Обременение Performance. Давайте начнем с самого вопиющего преступления и идем оттуда.

Нет PK, нет RK не указано
запросов: Имя == "Frank"
Performance Charge: 10 субъектов

Я считаю, что это правильно (пожалуйста, поправьте меня, если я ошибаюсь). Но как насчет следующих сценариев?

PK указано, нет РК не указано
запросов: PartitionKey == "A" и название == "Frank"
Performance Charge: 5 субъектов

PK указан, диапазон РК указано
Запрос: PartitionKey == "A" AND (RowKey> = "2" AND RowKey < = "3")
Производительность: 2? или 5?

ПК указано, частичный диапазон РК указано
запрос: PartitionKey == "А" и RowKey> = "4" Производительность зарядки: 2? или 5?

Диапазон ПК указано
Запрос: PartitionKey> = "В" и PartitionKey < = "С"
Производительность зарядки: 5? или 10?

Частичный диапазон PK указанный
Запрос: PartitionKey> = "C"
Производительность зарядки: 2? или 10?

Благодарим вас за любые указатели!

ответ

0

По моему опыту, вот мое понимание ваших запросов, вы можете обратиться к нему.

Нет PK, нет РК не указано запросов: Имя == «Frank»

Полное сканирование таблицы: Результаты запроса в сканировании всей таблицы (т.е. все строки во всех разделах в таблице).

Performance Charge: 10

PK указано, нет РК не указано запросов: PartitionKey == "A" И имя == "Frank"

PK указан, диапазон РК указано Запрос: PartitionKey == "А" и (RowKey> = "2" И RowKey < = "3")

ПК указано, частичный диапазон РК указано запроса: PartitionKey == "А" и RowKey> = "4"

Ряд сканирования диапазона: Запрос приводит к сканированию строк в определенном разделе.

Производительность зарядки: 5

Запрос: PartitionKey> = "В" И PartitionKey < = "С"

Запрос: PartitionKey> = "С"

Диапазон раздела scan: Запрос приводит к сканированию ряда серверов разделов.

Performance Charge: 5, 2

Кроме того, вы можете следовать Designing a Scalable Partitioning Strategy for Azure Table Storage и это tutorial для лучшего понимания этого.

+0

Спасибо за ответ. Я удивлен вашим вторым блоком. У меня создалось впечатление, что RowKeys индексируются. Не означает ли это, что запрос, который задает диапазон RowKeys (> = "2" AND <= "4"), должен стоить только затрат времени, необходимого для сканирования строк 2, 3 и 4, для производительности 3 юридические лица? Спасибо за ссылки. –