Índices secundários exigem armazenamento adicional para tabelas de índice e consomem unidades de capacidade (CUs) de leitura e gravação quando o sistema grava nessas tabelas. Este tópico descreve as regras de faturamento para índices secundários.
Uma unidade de capacidade (CU) é a menor unidade para medir custos de throughput de leitura e gravação. Ler 4 KB de uma única linha por segundo consome uma CU de leitura.
Ao criar índices secundários em uma tabela de dados, o sistema mantém as tabelas de índice sincronizadas com a tabela de dados. Isso introduz três componentes de faturamento: armazenamento das tabelas de índice, CUs de gravação consumidas quando o sistema grava nas tabelas de índice e CUs de leitura consumidas quando você consulta as tabelas de índice diretamente.
|
Item faturável |
Descrição |
|
Armazenamento de dados |
O espaço de armazenamento utilizado pela tabela de dados e pelas tabelas de índice. |
|
CUs de leitura consumidas para gravar nas tabelas de índice |
As CUs consumidas por operações de leitura quando o sistema exclui, insere ou atualiza linhas de índice. |
|
CUs de gravação consumidas para gravar nas tabelas de índice |
As CUs consumidas quando o sistema insere ou atualiza linhas de índice. |
|
CUs consumidas por operações regulares de leitura |
As CUs consumidas quando você lê dados de uma tabela de dados ou de tabelas de índice por meio de uma API. |
|
CUs consumidas por operações regulares de gravação |
As CUs consumidas quando você insere dados em uma tabela de dados por meio de uma API. |
Regras de faturamento para armazenar, gravar e ler uma tabela de índice:
As regras de faturamento para armazenar e ler uma tabela de índice são as mesmas de uma tabela de dados. Para mais informações, consulte Visão geral do faturamento.
-
As CUs são consumidas de acordo com as seguintes regras quando o sistema grava em uma tabela de índice:
CUs de gravação são consumidas apenas quando uma linha de índice é inserida ou atualizada.
CUs de leitura são consumidas quando uma linha de índice é excluída, atualizada ou inserida. O número de CUs de leitura equivale à quantidade de dados lidos das colunas indexadas correspondentes na tabela de dados.
CUs de leitura consumidas para gravar nas tabelas de índice
Quando o sistema grava nas tabelas de índice secundário, as CUs de leitura consumidas dependem do tipo de operação e de se a operação afeta colunas indexadas.
A tabela a seguir resume o consumo de CUs de leitura para cada tipo de operação:
|
Operação |
Cenário |
CUs de leitura consumidas |
|
PUT (inserir nova linha) |
Não grava em colunas de atributo indexadas |
1 |
|
PUT (inserir nova linha) |
Grava em colunas de atributo indexadas |
1 |
|
PUT (sobrescrever linha existente) |
Não atualiza colunas de atributo indexadas |
1 |
|
PUT (sobrescrever linha existente) |
Atualiza colunas de atributo indexadas |
ceil(dados da coluna indexada / 4 KB); mínimo 1 |
|
UPDATE (inserir nova linha) |
Não grava em colunas indexadas |
0 |
|
UPDATE (inserir nova linha) |
Grava em colunas indexadas |
1 |
|
UPDATE (atualizar linha existente) |
Não grava em colunas de atributo indexadas |
0 |
|
UPDATE (atualizar linha existente) |
Grava em colunas de atributo indexadas |
ceil(dados da coluna indexada / 4 KB); mínimo 1 |
|
DELETE |
Exclui uma linha |
ceil(dados da coluna indexada / 4 KB); mínimo 1 |
Fórmula de cálculo (quando aplicável):
Divida a quantidade total de dados lidos das colunas indexadas (excluindo colunas de chave primária) por 4. Arredonde para o número inteiro mais próximo. Se o total for 0 KB, 1 CU será consumida.
-
Ao usar a operação PUT para inserir uma linha de dados:
A operação PUT não grava em colunas de atributo indexadas, portanto nenhuma linha de índice é inserida. Uma CU de leitura é consumida.
A operação PUT grava em colunas de atributo indexadas, inserindo novas linhas de índice. Uma CU de leitura é consumida.
-
Ao sobrescrever uma linha com a operação PUT:
A operação PUT não atualiza nenhuma coluna de atributo indexada. Uma CU de leitura é consumida.
-
A operação PUT atualiza colunas de atributo indexadas. As CUs de leitura consumidas são calculadas da seguinte forma:
Divida a quantidade total de dados lidos das colunas de atributo indexadas (excluindo colunas de chave primária) por 4. Arredonde para o número inteiro mais próximo. Se o total for 0 KB, uma CU será consumida.
-
Quando a operação UPDATE insere uma linha de dados:
A operação UPDATE não grava em nenhuma coluna indexada. Nenhuma CU de leitura é consumida.
A operação UPDATE grava em colunas indexadas. Uma CU de leitura é consumida.
-
Ao atualizar uma linha com a operação UPDATE:
A operação UPDATE não grava em nenhuma coluna de atributo indexada. Nenhuma CU de leitura é consumida.
-
A operação UPDATE grava em colunas de atributo indexadas. As CUs de leitura consumidas são calculadas da seguinte forma:
Divida a quantidade total de dados lidos das colunas indexadas (excluindo colunas de chave primária) por 4. Arredonde para o número inteiro mais próximo. Se o total for 0 KB, uma CU será consumida.
-
Quando a operação DELETE exclui uma linha, as CUs de leitura consumidas são calculadas da seguinte forma:
Divida a quantidade total de dados lidos das colunas indexadas (excluindo colunas de chave primária) por 4. Arredonde para o número inteiro mais próximo. Se o total for 0 KB, uma CU será consumida.
-
Se a tabela de dados usar autoincremento de chave primária, a inserção de dados não consome CUs de leitura. A atualização de uma linha em uma tabela com autoincremento de chave primária consome CUs de leitura, calculadas pelas mesmas regras da operação UPDATE.
nullUse o autoincremento de chave primária para inserir dados em uma tabela de dados e reduzir as CUs de leitura consumidas pelas tabelas de índice.
Para tabelas sem autoincremento de chave primária, uma CU de leitura é consumida quando uma coluna indexada é lida, mesmo que nenhum dado seja recuperado. Para tabelas com autoincremento de chave primária, a inserção de dados ignora a operação de leitura nas colunas indexadas, portanto nenhuma CU de leitura é consumida.
CUs de gravação consumidas para gravar nas tabelas de índice
CUs de gravação são consumidas quando dados gravados na tabela de dados desencadeiam alterações em uma tabela de índice. O número de CUs de gravação depende do que muda nas linhas de índice.
Resumo das regras de CU de gravação:
|
Alteração na linha de índice |
CUs de gravação consumidas |
|
Nenhuma alteração nas linhas de índice |
0 |
|
Nova linha de índice inserida |
Determinada pelo tamanho da linha de índice inserida |
|
Linha de índice excluída |
Depende do tamanho da linha de índice excluída |
|
Linha de índice atualizada |
Calculada com base no tamanho da linha de índice atualizada |
|
Linha de índice excluída e nova inserida |
Determinada pelo tamanho total das linhas de índice excluída e inserida |
Nenhuma alteração nas linhas de índice — nenhuma CU de gravação consumida.
Inserção de nova linha de índice — as CUs de gravação dependem do tamanho da linha inserida.
Exclusão de linha de índice — as CUs de gravação dependem do tamanho da linha excluída.
Atualização de linha de índice — as CUs de gravação dependem do tamanho da linha atualizada.
Exclusão e inserção de linha de índice — as CUs de gravação dependem do tamanho total das linhas excluída e inserida.
Fórmula de cálculo:
Divida o tamanho total dos dados da linha de índice por 4. Arredonde para o número inteiro mais próximo.
Regras detalhadas por operação:
-
Ao usar a operação PUT para inserir uma linha de dados:
A operação PUT não grava em nenhuma coluna de atributo indexada. Nenhuma CU de gravação é consumida.
-
A operação PUT grava em colunas de atributo indexadas, inserindo novas linhas de índice. Para cada tabela de índice, as CUs de gravação são calculadas da seguinte forma:
Divida o tamanho total da linha de índice inserida por 4. Arredonde para o número inteiro mais próximo.
-
Ao sobrescrever uma linha com a operação PUT:
A operação PUT atualiza apenas colunas de chave primária indexadas. Nenhuma CU de gravação é consumida.
-
A operação PUT atualiza colunas indexadas. CUs de gravação são consumidas para cada tabela de índice afetada, exceto índices esparsos.
Todos os índices atualizados pela operação PUT consomem CUs de gravação, exceto índices esparsos.
-
Quando a operação UPDATE insere uma linha de dados:
A operação UPDATE não grava em nenhuma coluna indexada. Nenhuma CU de gravação é consumida.
-
A operação UPDATE grava em colunas indexadas. Para cada tabela de índice, as CUs de gravação dependem de se uma nova linha de índice é inserida:
Uma nova linha de índice é inserida — divida o tamanho total dos dados da linha de índice por 4 e arredonde para o número inteiro mais próximo.
Nenhuma linha de índice é inserida — nenhuma CU de gravação é consumida.
-
Ao atualizar uma linha com a operação UPDATE:
A operação UPDATE não atualiza nenhuma coluna de atributo indexada. Nenhuma CU de gravação é consumida.
-
A operação UPDATE atualiza colunas de atributo indexadas. Para cada tabela de índice, as CUs de gravação são calculadas com base nas alterações:
Uma linha de índice existente é excluída — as CUs de gravação são determinadas pelo tamanho das chaves primárias indexadas na linha de índice excluída.
Uma nova linha de índice é inserida com base na linha atualizada — as CUs de gravação são determinadas pelo tamanho das chaves primárias indexadas na linha de índice inserida.
Apenas os dados de atributo em uma linha de índice existente são atualizados, sem inserção de nova linha de índice — CUs de gravação são consumidas com base no tamanho das alterações.
Divida o tamanho total dos dados da linha de índice por 4. Arredonde para o número inteiro mais próximo.
-
Quando a operação DELETE exclui uma linha:
Se existir uma linha de índice para a linha excluída, CUs de gravação serão consumidas. Divida o tamanho total dos dados nas colunas indexadas correspondentes (excluindo colunas de chave primária) por 4. Arredonde para o número inteiro mais próximo.
Para tabelas de dados que usam autoincremento de chave primária: a inserção de dados consome CUs de gravação calculadas pelas mesmas regras da operação PUT. A atualização de uma linha consome CUs de gravação calculadas pelas mesmas regras da operação UPDATE.
Medição do tamanho da tabela de índice
O tamanho de uma tabela de índice é medido da mesma forma que o de uma tabela de dados: o tamanho total de todas as linhas, que corresponde à soma dos dados de chave primária e dos dados de atributo em cada linha. Para mais informações, consulte Armazenamento de dados.
CUs de leitura consumidas para ler uma tabela de índice
A leitura de uma tabela de índice por meio de um SDK, do console ou de outros métodos, como DLA, consome CUs de leitura. As CUs de leitura são calculadas pelas mesmas regras de leitura de uma tabela de dados.
Exemplos
O exemplo a seguir usa uma tabela de dados com duas tabelas de índice para mostrar o consumo de CUs em diferentes cenários.
Configuração:
|
Componente |
Chaves primárias |
Colunas de atributo |
|
Tabela de dados Table |
PK0, PK1 |
Col0, Col1, Col2 |
|
Tabela de índice Index0 |
Col0, PK0, PK1 |
Col2 |
|
Tabela de índice Index1 |
Col1, Col0, PK0, PK1 |
Nenhuma |
A operação usada é UPDATE em PK0 e PK1.
-
Se a linha não existir na tabela de dados:
A atualização de Col3 não consome CUs de leitura nem de gravação.
-
A atualização de Col1 consome:
Uma CU de leitura
Nenhuma CU de gravação
-
A atualização de Col0 e Col1 consome:
Uma CU de leitura
CUs de gravação para Index0, determinadas pelo tamanho total dos dados inseridos em Col0, PK0 e PK1. CUs de gravação para Index1, determinadas pelo tamanho total dos dados inseridos em Col0, Col1, PK0 e PK1.
-
Se a linha já existir na tabela de dados:
A atualização de Col3 não consome CUs de leitura nem de gravação.
-
A atualização de Col2 consome:
CUs de leitura determinadas pela quantidade de dados lidos de Col0. Se a operação UPDATE inserir dados em Col0, uma CU será consumida.
Para Index0: se a operação UPDATE inserir dados em Col0, nenhuma CU de gravação será consumida. Se a operação UPDATE atualizar os dados em Col0, CUs de gravação serão consumidas, determinadas pelo tamanho total dos dados inseridos em Col0, PK0, PK1 e Col2. Index1 não consome CUs de gravação.
-
A atualização de Col1 consome:
CUs de leitura determinadas pela quantidade de dados lidos de Col0 e Col1. Se o total for 0 KB, uma CU será consumida.
Para Index0: nenhuma CU de gravação é consumida. Para Index1: se uma linha de índice for inserida, CUs de gravação serão consumidas, determinadas pela quantidade de dados lidos de Col0 e inseridos em Col1, PK0 e PK1. Se nenhum dado em Col0 for atualizado, nenhuma linha de índice será inserida e nenhuma CU de gravação será consumida. Se os dados em Col0 e Col1 forem atualizados, CUs de gravação serão consumidas para excluir a linha de índice correspondente, determinadas pelo tamanho total dos dados em Col0, Col1, PK0 e PK1.