Gerir computações

Importante

O Autoscaling do Lakebase é a versão mais recente do Lakebase, com computação autoescalável, escala até zero, ramificação e restauração instantânea. Para regiões suportadas, consulte Disponibilidade de Regiões. Se é utilizador do Lakebase Provisioned, consulte Lakebase Provisioned.

Um compute é um serviço virtualizado que executa o Postgres para os seus projetos Lakebase. Cada filial tem uma unidade de computação primária (leitura-escrita). É necessário um computador para se ligar a uma sucursal e aceder aos seus dados. Para uma visão geral de como os cálculos e os endpoints se relacionam, veja Computes and endpoints.

Compreensão dos cálculos

Visão geral da computação

Os recursos de computação fornecem o poder de processamento e a memória necessários para executar consultas, gerir ligações e gerir operações de base de dados. Cada projeto tem um cálculo primário de leitura-escrita para o seu ramo predefinido.

Para se ligar a uma base de dados num ramo, deve usar um cálculo associado a esse ramo. Cálculos maiores consomem mais horas de cálculo no mesmo período de tempo ativo do que cálculos mais pequenos.

Identificadores de computação

Cada cálculo tem três identificadores, acessíveis a partir do menu Obter ID no separador Computes:

Identificador Fonte Exemplo Usado em
Nome O ID do endpoint, definido como primary para a computação padrão. Fornecido pelo utilizador ao criar endpoints através da API. primary Caminho de recurso API (.../endpoints/primary)
UID Gerado pelo sistema ep-sweet-butterfly-y2nm75e1 Nome de host de ligação
Nome do recurso Caminho completo da API projects/my-project/branches/production/endpoints/primary Chamadas de API

O nome de host na tua cadeia de ligação usa o UID, não o nome da computação.

Dimensionamento computacional

Tamanhos de computação disponíveis

O Lakebase Postgres suporta os seguintes tamanhos de cálculo:

  • Autoscale calcula: 0,5 UC a 32 UC (0,5, depois incrementos inteiros: 1 UC, 2 UC, 3 UC... 16 UC, depois 24 UC, 28 UC, 32 UC)
  • Unidades de Cálculo de tamanho fixo maiores: 36 CU a 112 CU (36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 88, 96, 104, 112)
O que há numa unidade de computação?

Cada Unidade de Computação () aloca aproximadamente 2 GB de RAM à instância da base de dados, juntamente com todos os recursos associados da CPU e SSD local. A ampliação aumenta esses recursos linearmente. O Postgres distribui a memória alocada em vários componentes:

  • Caches de banco de dados
  • Memória do trabalhador
  • Outros processos com requisitos de memória fixa

O desempenho varia com base no tamanho dos dados e na complexidade da consulta. Antes de escalar, teste e otimize as consultas. O armazenamento é dimensionado automaticamente.

Observação

Lakebase Provisionado vs Autoescalonamento: No Lakebase Provisionado, cada Unidade de Computação alocava aproximadamente 16 GB de RAM. No Lakebase Autoscaling, cada CU aloca 2 GB de RAM. Esta alteração oferece opções de escalabilidade mais granulares e controlo de custos.

Especificações de computação
Unidades de computação RAM Máximo de Ligações
0,5 CU Aproximadamente 1 GB 104
1 UC cerca de 2 GB 209
2 Unidades de Computação ~4 GB 419
3 Unidades de Carga ~6 GB 629
4 UC ~8 GB 839
5 UC ~10 GB 1049
6 Unidades de Crédito ~12 GB 1258
7 CU ~14 GB 1468
8 UCs ~16 GB 1678
9 UC ~18 GB 1888
10 CU ~20 GB 2098
12 unidades computacionais (if "CU" stands for Computational Units). ~24 GB 2517
14 UC ~28 GB 2937
16 UCs (Unidades de Cálculo) ~32 GB 3357
24 CU ~48 GB 4000
28 CU ~56 GB 4000
32 Unidades de Cálculo ~64 GB 4000
36 CU ~72 GB 4000
40 UCs ~80 GB 4000
44 CU ~88 GB 4000
48 Unidade de Computação ~96 GB 4000
52 CU ~104 GB 4000
56 UC ~112 GB 4000
60 UCs ~120 GB 4000
64 Unidades de Computação ~128 GB 4000
72 CU ~144 GB 4000
80 UC ~160 GB 4000
88 CU ~176 GB 4000
96 Unidades de Cálculo ~192 GB 4000
104 Unidades de Cálculo (CU) ~208 GB 4000
112 CU ~224 GB 4000

Limites de ligação para computação de autoescalonamento: Quando o autoescalonamento está ativado, o número máximo de ligações é determinado pelo tamanho máximo de unidade de computação (CU) na sua faixa de autoescalonamento. Por exemplo, se configurarem o autoscaling entre 2 CU até 8 CU, o teu limite de ligação é 1.678 (o limite para 8 CU).

Limites de ligação de réplicas de leitura: Limites de conexões de computação das réplicas de leitura são sincronizados com as suas definições de computação de leitura e escrita principais. Consulte a seção Gerir réplicas de leitura para mais detalhes.

Observação

Algumas conexões são reservadas para uso do sistema e uso administrativo. Por esta razão, SHOW max_connections pode mostrar um valor superior ao valor de Ligações Máximas mostrado na tabela acima ou na gaveta Editar cálculo na aplicação Lakebase. Os valores na tabela e na gaveta refletem o número real de conexões disponíveis para uso direto, enquanto SHOW max_connections inclui conexões reservadas.

Orientação de dimensionamento

Ao selecionar um tamanho de computação, considere estes fatores:

Fator Recommendation
Complexidade de consulta Consultas analíticas complexas beneficiam de tamanhos de computação maiores
Ligações concorrentes Mais ligações requerem CPU e memória adicionais
Volume de dados Conjuntos de dados maiores podem precisar de mais memória para um desempenho ótimo
Tempo de resposta Aplicações críticas podem exigir cálculos maiores para um desempenho consistente

Estratégia de dimensionamento ótima

Selecione um tamanho de computação com base nos seus requisitos de dados:

  • Conjunto de dados completo na memória: Escolha um tamanho de computação que consiga armazenar todo o seu conjunto de dados em memória para melhor desempenho
  • Conjunto de trabalho na memória: Para grandes conjuntos de dados, assegure que os seus dados frequentemente acedidos cabem na memória
  • Limites de ligação: Selecione um tamanho que suporte as suas ligações máximas concorrentes previstas

Autoescalonamento

O Lakebase suporta tanto configurações de computação de tamanho fixo como de autoescalonamento. O autoscaling ajusta dinamicamente os recursos computacionais com base na procura da carga de trabalho, otimizando tanto o desempenho como o custo.

Tipo de Configuração Description
Tamanho fixo (0,5-32 CU) Selecione um tamanho de computação fixo que não escale com a procura de carga de trabalho. Disponível para unidades de computação de 0,5 UC a 32 UC
Autoscaling (0,5-32 CU) Use um deslizador para especificar os tamanhos mínimos e máximos de computação. A Lakebase escala para cima e para baixo dentro destes limites com base na carga atual. Disponível para computações até 32 Unidades de Cálculo
Recursos de computação de tamanho fixo maiores (36-112 CU) Selecione uma opção de computação de tamanho fixo maior, de 36 CU a 112 CU. Estes sistemas de computação maiores estão disponíveis apenas em tamanhos fixos e não suportam autoscaling.

Limite de autoescalonamento: O autoescalonamento é suportado para unidades de computação até 32 CUs. Para cargas de trabalho que requerem mais de 32 CU, estão disponíveis unidades de computação de tamanho fixo maiores, de 36 CU a 112 CU.

Configuração do autoescalonamento

Para ativar ou ajustar o autoscaling para um cálculo, edite o cálculo e use o slider para definir os tamanhos mínimos e máximos de computação.

Configuração de autoescalonamento

Para uma visão geral de como funciona o autoscaling, veja Autoscaling.

Considerações sobre o autoescalonamento

Para um desempenho ótimo de dimensionamento automático:

  • Defina o seu tamanho mínimo de computação suficientemente grande para armazenar em cache o seu conjunto de trabalho na memória
  • Considere que o baixo desempenho pode ocorrer até que o cálculo escale e armazene os seus dados em cache
  • Os teus limites de ligação baseiam-se no tamanho máximo de computação na tua faixa de autoescalonamento

Restrições de alcance de autoescalonamento: A diferença entre os seus tamanhos máximo e mínimo de computação não pode exceder 16 CU (isto é, max - min ≤ 16 CU). Por exemplo, podes configurar o autoscaling de 8 CU para 24 CU, ou de 16 CU para 32 CU, mas não de 0,5 CU para 32 CU (que seria um intervalo de 31,5 CU). Esta restrição garante um comportamento de escalabilidade gerível, mantendo ao mesmo tempo flexibilidade. O slider na aplicação Lakebase aplica automaticamente esta restrição quando configura o seu intervalo de autoescalonamento. Para cargas de trabalho que requerem mais de 32 CUs, utilize unidades de computação de tamanho fixo maiores.

Reduzir para zero

A funcionalidade de escala para zero do Lakebase faz automaticamente a transição de um cálculo para um estado de inatividade após um período de inatividade, reduzindo custos para bases de dados que não estão continuamente ativas.

Configuração Description
Escalar para zero ativado Compute suspende-se automaticamente após a inatividade para reduzir custos
Escalamento para zero desativado Mantenha um cálculo "sempre ativo" que elimine a latência de arranque

Configurar escala para zero

Para ativar ou ajustar a escala para zero num cálculo, edite o cálculo e alterne a definição de escala para zero. Quando ativado, pode configurar o tempo limite de inatividade.

Configuração de escala até zero

Observação

Quando se cria um projeto, o ramo production é criado com uma instância de computação que tem o scale-to-zero desativado por defeito, o que significa que a instância de computação permanece sempre ativa. Pode ativar o "scale-to-zero" para este tipo de computação, se necessário.

Para uma visão geral de como funciona a escala para zero, veja Escala para zero.

Criar e gerir computações

Visualização computa

Visualização na interface de utilizador

Para visualizar os cálculos de um ramo, navegue até à página de Ramos do seu projeto na aplicação Lakebase e selecione um ramo para visualizar o separador Computes .

Separador Computes que mostra a informação de computação

O separador Computes apresenta informações sobre todos os cálculos associados ao ramo. A informação apresentada no separador Computes está descrita na tabela seguinte.

Detail Description
Tipo de computação O tipo de computação é Primário (leitura e escrita) ou Réplica de Leitura (apenas leitura). Uma ramificação pode ter apenas uma instância de computação Primária (leitura e escrita) e múltiplas Réplicas de Leitura (só de leitura).
Situação Estado atual: Ativo ou Suspenso (quando a computação foi suspensa devido ao escalonamento para zero). Mostra a data e hora em que o cálculo foi suspenso.
UID O identificador único gerado pelo sistema para o cálculo, que começa com um ep- prefixo. Este valor aparece no nome do host da ligação. Ver Identificadores de computação.
Tamanho O tamanho de computação em unidades de computação (UC). Mostra um único valor de CU (por exemplo, 8 CU) para computações de tamanho fixo. Mostra um intervalo (por exemplo, 8-16) para cálculos com autoscaling ativado.
Última atividade A data e hora em que o cálculo esteve ativo pela última vez.

Para cada cálculo, pode:

  • Clique em Ligar para abrir um diálogo de ligação com detalhes de ligação para o ramo associado ao cálculo. O diálogo inclui um interruptor de pooling de ligações para funções nativas de palavra-passe do Postgres. Veja Ligar à sua base de dados e Usar gestão de conexões.
  • Clique em Editar para modificar o tamanho do cálculo (intervalo fixo ou de autoescala) e configurar definições de escala para zero. Ver Editar um cálculo.
  • Clique no ícone do menu para aceder a opções adicionais:
    • Monitorizar atividade: Veja a atividade de cálculo e métricas de desempenho. Veja Monitorizar a sua base de dados.
    • Reiniciar o cálculo: Reiniciar o cálculo para resolver problemas de ligação ou aplicar alterações de configuração. Veja Reiniciar um cálculo.

Para adicionar um cálculo de réplica de leitura ao ramo, clique em Adicionar Réplica de Leitura. As réplicas de leitura são instâncias apenas de leitura que permitem escalonamento horizontal, permitindo-lhe descarregar a carga de trabalho de leitura da sua computação principal. Ver Réplicas de leitura e Gerir réplicas de leitura.

Faz uma computação programática

Para obter detalhes sobre um cálculo específico usando a API Postgres:

Python SDK
from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# Get endpoint details
endpoint = w.postgres.get_endpoint(
    name="projects/my-project/branches/production/endpoints/my-compute"
)

print(f"Endpoint: {endpoint.name}")
print(f"Type: {endpoint.status.endpoint_type}")
print(f"State: {endpoint.status.current_state}")
print(f"Host: {endpoint.status.hosts.host}")
print(f"Min CU: {endpoint.status.autoscaling_limit_min_cu}")
print(f"Max CU: {endpoint.status.autoscaling_limit_max_cu}")

No SDK, acede ao host via endpoint.status.hosts.host (não endpoint.status.host).

SDK de Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.Endpoint;

WorkspaceClient w = new WorkspaceClient();

// Get endpoint details
Endpoint endpoint = w.postgres().getEndpoint(
    "projects/my-project/branches/production/endpoints/my-compute"
);

System.out.println("Endpoint: " + endpoint.getName());
System.out.println("Type: " + endpoint.getStatus().getEndpointType());
System.out.println("State: " + endpoint.getStatus().getCurrentState());
System.out.println("Host: " + endpoint.getStatus().getHosts().getHost());
System.out.println("Min CU: " + endpoint.getStatus().getAutoscalingLimitMinCu());
System.out.println("Max CU: " + endpoint.getStatus().getAutoscalingLimitMaxCu());
CLI
# Get endpoint details
databricks postgres get-endpoint projects/my-project/branches/production/endpoints/my-compute --output json | jq
encaracolar
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-compute" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

Lista calcula programaticamente

Para listar todos os cálculos e réplicas de leitura para um branch usando a API Postgres:

Python SDK
from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# List all endpoints for a branch
endpoints = list(w.postgres.list_endpoints(
    parent="projects/my-project/branches/production"
))

for endpoint in endpoints:
    print(f"Endpoint: {endpoint.name}")
    print(f"  Type: {endpoint.status.endpoint_type}")
    print(f"  State: {endpoint.status.current_state}")
    print(f"  Host: {endpoint.status.hosts.host}")
    print(f"  CU Range: {endpoint.status.autoscaling_limit_min_cu}-{endpoint.status.autoscaling_limit_max_cu}")
    print()

No SDK, acede ao host via endpoint.status.hosts.host (não endpoint.status.host).

SDK de Java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;

WorkspaceClient w = new WorkspaceClient();

// List all endpoints for a branch
for (Endpoint endpoint : w.postgres().listEndpoints("projects/my-project/branches/production")) {
    System.out.println("Endpoint: " + endpoint.getName());
    System.out.println("  Type: " + endpoint.getStatus().getEndpointType());
    System.out.println("  State: " + endpoint.getStatus().getCurrentState());
    System.out.println("  Host: " + endpoint.getStatus().getHosts().getHost());
    System.out.println("  CU Range: " + endpoint.getStatus().getAutoscalingLimitMinCu() +
        "-" + endpoint.getStatus().getAutoscalingLimitMaxCu());
    System.out.println();
}
CLI
# List endpoints for a branch
databricks postgres list-endpoints projects/my-project/branches/production --output json | jq
encaracolar
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/endpoints" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

Observação

Configurações típicas de ramos:

  • 1 ponto final: apenas cálculo primário de leitura-escrita
  • 2+ extremos: Computação primária mais uma ou mais réplicas de leitura

Editar um cálculo

Podes editar um cálculo para alterar o seu tamanho, configuração de autoescalabilidade ou escalar para zero. Os nomes de computação são apenas de leitura e não podem ser renomeados.

Para editar um cálculo:

IU

  1. Vá para a aba Computes da sua filial na aplicação Lakebase.
  2. Clica em Editar para o cálculo, ajusta as definições e clica em Guardar.

Editar um diálogo de cálculo

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Endpoint, EndpointSpec, EndpointType, FieldMask

w = WorkspaceClient()

# Update a single field (max CU)
endpoint_spec = EndpointSpec(endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE, autoscaling_limit_max_cu=6.0)
endpoint = Endpoint(
    name="projects/my-project/branches/production/endpoints/my-compute",
    spec=endpoint_spec
)

result = w.postgres.update_endpoint(
    name="projects/my-project/branches/production/endpoints/my-compute",
    endpoint=endpoint,
    update_mask=FieldMask(field_mask=["spec.autoscaling_limit_max_cu"])
).wait()

print(f"Updated max CU: {result.status.autoscaling_limit_max_cu}")

Para atualizar vários campos, inclua-os tanto na especificação como na máscara de atualização:

# Update multiple fields (min and max CU)
endpoint_spec = EndpointSpec(
    endpoint_type=EndpointType.ENDPOINT_TYPE_READ_WRITE,
    autoscaling_limit_min_cu=1.0,
    autoscaling_limit_max_cu=8.0
)
endpoint = Endpoint(
    name="projects/my-project/branches/production/endpoints/my-compute",
    spec=endpoint_spec
)

result = w.postgres.update_endpoint(
    name="projects/my-project/branches/production/endpoints/my-compute",
    endpoint=endpoint,
    update_mask=FieldMask(field_mask=[
        "spec.autoscaling_limit_min_cu",
        "spec.autoscaling_limit_max_cu"
    ])
).wait()

print(f"Updated min CU: {result.status.autoscaling_limit_min_cu}")
print(f"Updated max CU: {result.status.autoscaling_limit_max_cu}")

SDK de Java

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import com.google.protobuf.FieldMask;

WorkspaceClient w = new WorkspaceClient();

// Update a single field (max CU)
EndpointSpec endpointSpec = new EndpointSpec()
    .setAutoscalingLimitMaxCu(6.0);

FieldMask updateMask = FieldMask.newBuilder()
    .addPaths("spec.autoscaling_limit_max_cu")
    .build();

w.postgres().updateEndpoint(
    new UpdateEndpointRequest()
        .setName("projects/my-project/branches/production/endpoints/my-compute")
        .setEndpoint(new Endpoint().setSpec(endpointSpec))
        .setUpdateMask(updateMask)
);

System.out.println("Update initiated");

Para atualizar vários campos, inclua-os tanto na especificação como na máscara de atualização:

// Update multiple fields (min and max CU)
EndpointSpec endpointSpec = new EndpointSpec()
    .setAutoscalingLimitMinCu(1.0)
    .setAutoscalingLimitMaxCu(8.0);

FieldMask updateMask = FieldMask.newBuilder()
    .addPaths("spec.autoscaling_limit_min_cu")
    .addPaths("spec.autoscaling_limit_max_cu")
    .build();

w.postgres().updateEndpoint(
    new UpdateEndpointRequest()
        .setName("projects/my-project/branches/production/endpoints/my-compute")
        .setEndpoint(new Endpoint().setSpec(endpointSpec))
        .setUpdateMask(updateMask)
);

System.out.println("Update initiated");

CLI

# Update a single field (max CU)
databricks postgres update-endpoint projects/my-project/branches/production/endpoints/my-compute spec.autoscaling_limit_max_cu \
  --json '{
    "spec": {
      "autoscaling_limit_max_cu": 6.0
    }
  }'

# Update multiple fields (min and max CU)
databricks postgres update-endpoint projects/my-project/branches/production/endpoints/my-compute "spec.autoscaling_limit_min_cu,spec.autoscaling_limit_max_cu" \
  --json '{
    "spec": {
      "autoscaling_limit_min_cu": 1.0,
      "autoscaling_limit_max_cu": 8.0
    }
  }'

encaracolar

# Update a single field (max CU)
curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-compute?update_mask=spec.autoscaling_limit_max_cu" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-compute",
    "spec": {
      "autoscaling_limit_max_cu": 6.0
    }
  }' | jq

# Update multiple fields (min and max CU)
curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/endpoints/my-compute?update_mask=spec.autoscaling_limit_min_cu,spec.autoscaling_limit_max_cu" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "projects/my-project/branches/production/endpoints/my-compute",
    "spec": {
      "autoscaling_limit_min_cu": 1.0,
      "autoscaling_limit_max_cu": 8.0
    }
  }' | jq

Observação

Alterações às definições de computação têm efeito imediato e podem causar breves interrupções na ligação durante o reinício.

Reiniciar uma computação

Reiniciar um cálculo para aplicar atualizações, resolver problemas de desempenho ou detetar alterações de configuração.

Para reiniciar um cálculo:

  1. Vá para a aba Computes da sua filial na aplicação Lakebase.
  2. Clique no ícone do menu Kebab. Menu para o cálculo, selecione Reiniciar e confirme a operação.

Importante

Reiniciar um cálculo interrompe quaisquer ligações ativas. Configure as suas aplicações para se reconectarem automaticamente e evitar interrupções prolongadas.