Nesta página, descrevemos a capacidade de computação do Spanner e as duas unidades de medida usadas para quantificá-la: nós e unidades de processamento.
Capacidade de computação
Ao criar uma instância, você escolhe uma configuração de instância e uma quantidade de capacidade de computação para ela. A capacidade de computação da instância tem as seguintes características:
- Ele determina a quantidade de recursos de servidor e armazenamento disponíveis para os bancos de dados na instância, incluindo a carga de disco. A carga de disco se aplica apenas a cargas de trabalho que acessam dados armazenados em HDD. Para mais informações, consulte Visão geral do armazenamento em níveis.
Ela é medida em unidades de processamento (PUs) ou nós, com 1.000 PUs equivalentes a 1 nó.
- Um nó ou 1.000 PUs é uma unidade lógica de capacidade de computação e não representa um único servidor físico. Os recursos de computação de cada nó são distribuídos em várias máquinas físicas ou servidores. O número de servidores por nó depende da configuração da instância. Por exemplo, uma instância regional usa pelo menos três servidores por nó, enquanto uma instância multirregional usa pelo menos cinco. Para mais informações, consulte Capacidade de computação e configurações de instância.
- Ao definir ou mudar a capacidade de computação em uma instância, é preciso especificar PUs em múltiplos de 100 (por exemplo, 100, 200, 300). Quando o número de PUs atingir 1.000, você poderá especificar quantidades maiores como múltiplos de 1.000 PUs (por exemplo, 1.000, 2.000, 3.000) ou como nós (por exemplo, 1, 2, 3).
O Spanner disponibiliza a capacidade de computação especificada (replicada) por completo em cada zona que hospeda uma réplica dos seus dados. Por exemplo, se você provisionar 1.000 PUs para uma instância regional, que normalmente tem réplicas em três zonas, cada uma dessas três zonas terá as 1.000 PUs completas de capacidade de computação disponíveis para atender à réplica. O Spanner não divide nem distribui o total de PUs entre as zonas. A unidade de medida usada não importa, a menos que você esteja criando uma instância com capacidade de computação menor que 1.000 PUs (1 nó). Nesse caso, é necessário usar PUs para especificar a capacidade de computação da instância.
As instâncias com menos de 1.000 PUs são criadas para tamanhos de dados, consultas e cargas de trabalho menores. Eles têm recursos de computação limitados, o que pode resultar em escalonamento não linear e problemas de desempenho para algumas cargas de trabalho. Essas instâncias também podem ter aumentos intermitentes nas latências.
Disponibilidade do Spanner
O Spanner foi projetado para alta disponibilidade. Como a capacidade de computação de cada instância é distribuída em vários servidores em zonas diferentes, o Spanner é resiliente à falha de qualquer servidor. A perda de um servidor individual não constitui uma falha de nó. O Spanner gerencia automaticamente os recursos subjacentes para oferecer disponibilidade contínua para sua instância.
Limites de armazenamento de dados
Conforme detalhado em Cotas e limites, para fornecer alta disponibilidade e baixa latência ao acessar um banco de dados, o Spanner usa a capacidade de computação de uma instância como base para determinar os limites de armazenamento, usando as seguintes diretrizes:
- Para instâncias menores que 1 nó (1.000 PUs), o Spanner aloca 1.024,0 GiB de dados para cada 100 PUs no banco de dados.
- Para instâncias de um nó ou mais, o Spanner reserva 10 TiB de dados para cada nó.
Por exemplo, para criar uma instância para um banco de dados de 300 GB, é possível definir a capacidade de computação como 100 PUs. Essa quantidade de capacidade de computação mantém a instância abaixo do limite até que o banco de dados aumente para mais de 1024,0 GiB. Depois que o banco de dados atingir esse tamanho, você precisará adicionar mais 100 PUs para que ele possa crescer. Caso contrário, o Spanner poderá rejeitar gravações no banco de dados. Para mais informações, consulte Recomendações para a utilização do armazenamento do banco de dados.
O Spanner cobra pelo armazenamento que as instâncias realmente utilizam, e não pela cota total de armazenamento.
Desempenho
Os valores de capacidade de processamento de leitura e gravação de pico que uma determinada quantidade de capacidade de computação podem fornecer dependem da configuração da instância, bem como do design do esquema e das características do conjunto de dados. Para mais informações, consulte a Visão geral da performance.
Use instâncias com menos de 1.000 PUs para tamanhos de dados, consultas e cargas de trabalho menores. Para cargas de trabalho maiores, os recursos de computação limitados podem resultar em escalonamento e desempenho não lineares, com aumentos intermitentes nas latências.
Capacidade de computação e configurações de instância
Conforme descrito em Configurações regionais, birregionais e multirregionais, o Spanner distribui uma instância entre zonas de uma ou mais regiões para oferecer alto desempenho e alta disponibilidade. Consequentemente, o Spanner também distribui os recursos do servidor fornecidos pela capacidade de computação da instância.
Aqui está um diagrama que ilustra essa distribuição de recursos do servidor.
Este diagrama descreve duas instâncias com configurações regionais:
- Instância-A mostra uma instância de 1.000 unidades de processamento (1 nó) com a distribuição da capacidade de computação que consome recursos do servidor em cada uma das três zonas.
- Instância-B mostra uma instância de 2.000 PUs (2 nós) com a distribuição da capacidade de computação que consome recursos do servidor em cada uma das três zonas.
Observe o seguinte neste diagrama:
Para cada instância, o Spanner aloca recursos de servidor em cada zona da configuração regional. Cada recurso de servidor por zona usa a réplica de dados na zona. Para informações sobre réplicas de dados nas configurações de instâncias, consulte Configurações regionais, birregionais e multirregionais. Para informações sobre como o Spanner mantém essas réplicas de dados sincronizadas, consulte Replicação.
Os recursos do servidor para a Instância-A são mostrados em caixas simples, enquanto os recursos para a Instância-B são mostrados em caixas subdivididas em duas partes. Essa diferença ilustra que o Spanner aloca recursos de servidor de maneira diferente para instâncias de tamanhos diferentes:
- Para instâncias com 1.000 PUs (1 nó) e menores, o Spanner aloca recursos de servidor em uma única tarefa de servidor por zona.
- Para instâncias com mais de 1.000 PUs (1 nó), o Spanner aloca recursos de servidor em várias tarefas de servidor por zona, com uma tarefa para cada 1.000 PUs. O uso de várias tarefas de servidor por zona oferece um desempenho melhor e permite que o Spanner crie divisões de banco de dados e forneça um desempenho ainda melhor.
Mudar a capacidade de computação
Após criar uma instância, é possível aumentar a capacidade de computação dela posteriormente. Na maioria dos casos, as solicitações são concluídas em poucos minutos. Em raras ocasiões, um escalonamento vertical pode levar até uma hora para ser concluído.
Na maioria dos casos, também é possível diminuir a capacidade de computação. Há alguns casos em que não é possível diminuir a capacidade de computação:
- A remoção da capacidade de computação exige que a instância armazene mais de 10 TiB de dados por 1.000 unidades de processamento (1 nó).
- Com base nos padrões históricos de uso, o Spanner criou um grande número de divisões nos dados da instância e, em alguns casos raros, o Spanner não consegue gerenciar as divisões depois da remoção da capacidade de computação.
No último caso, é possível tentar reduzir a capacidade de computação progressivamente em valores menores até encontrar a capacidade mínima que o Spanner precisa para gerenciar todas as divisões da instância. Se a instância não exigir mais tantas divisões devido a uma mudança nos padrões de uso, o Spanner poderá mesclar algumas divisões e permitir que você tente reduzir ainda mais a capacidade de computação da instância depois de uma ou duas semanas.
Ao remover capacidade de computação, monitore a utilização da CPU e as latências de solicitação no Cloud Monitoring para garantir que a utilização da CPU permaneça abaixo de 65% para instâncias regionais e 45% para cada região em instâncias multirregionais. Pode haver um aumento temporário nas latências de solicitação ao remover a capacidade de computação.
O Spanner não tem um modo de suspensão. A capacidade de computação do Spanner é um recurso dedicado e, mesmo quando você não está executando uma carga de trabalho, o Spanner frequentemente realiza trabalhos em segundo plano para otimizar e proteger seus dados.
Use o consoleGoogle Cloud , a Google Cloud CLI ou as bibliotecas de cliente do Spanner para mudar a capacidade de computação. Para mais informações, consulte Mudar a capacidade de computação.
Capacidade de computação versus réplicas
Se você precisar escalonar verticalmente o servidor e os recursos de armazenamento na instância, aumente a capacidade de computação da instância. Observe que o aumento da capacidade de computação não aumenta o número de réplicas (que são fixas em uma determinada configuração de instância), mas aumenta os recursos que cada réplica tem na instância. Aumentar a capacidade de computação oferece a cada réplica mais CPU e RAM, o que aumenta a capacidade de processamento da réplica (ou seja, mais leituras e gravações por segundo podem ocorrer).
A seguir
- Saiba como criar e gerenciar instâncias.