Configure as flags da base de dados

Esta página descreve como configurar as flags da base de dados para o Cloud SQL e apresenta as flags que pode definir para a sua instância. Usa flags de base de dados para muitas operações, incluindo ajustar parâmetros do SQL Server, ajustar opções e configurar e otimizar uma instância.

Quando define, remove ou modifica uma flag para uma instância da base de dados, a base de dados pode ser reiniciada. O valor da flag é, em seguida, mantido para a instância até que o remova. Se a instância for a origem de uma réplica e for reiniciada, a réplica também é reiniciada para se alinhar com a configuração atual da instância.

Configure as flags da base de dados

As secções seguintes abordam tarefas comuns de gestão de denúncias.

Defina uma flag da base de dados

Consola

  1. Na Google Cloud consola, selecione o projeto que contém a instância do Cloud SQL para a qual quer definir uma flag de base de dados.
  2. Abra a instância e clique em Editar.
  3. Aceda à secção Flags.
  4. Para definir uma flag que não tenha sido definida na instância anteriormente, clique em Adicionar item, escolha a flag no menu pendente e defina o respetivo valor.
  5. Clique em Guardar para guardar as alterações.
  6. Confirme as alterações em Sinalizações na página Vista geral.

gcloud

Edite a instância:

gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2

Este comando substitui todas as flags da base de dados definidas anteriormente. Para manter esses valores e adicionar novos, inclua os valores de todas as flags que quer definir na instância. Qualquer flag não incluída especificamente é definida com o respetivo valor predefinido. Para flags que não aceitam um valor, especifique o nome da flag seguido de um sinal de igual ("=").

Por exemplo, para definir os sinalizadores 1204, remote access e remote query timeout (s), pode usar o seguinte comando:

gcloud sql instances patch INSTANCE_NAME \
  --database-flags="1204"=on,"remote access"=on,"remote query timeout (s)"=300

Terraform

Para adicionar flags de base de dados, use um recurso do Terraform.

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance-flags"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    database_flags {
      name  = "1204"
      value = "on"
    }
    database_flags {
      name  = "remote access"
      value = "on"
    }
    database_flags {
      name  = "remote query timeout (s)"
      value = "300"
    }
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Aplique as alterações

Para aplicar a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.

Prepare o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.

    Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.

Prepare o diretório

Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).

  1. No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o ficheiro é denominado main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.

    Copie o exemplo de código para o ficheiro main.tf criado recentemente.

    Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.

  3. Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
  4. Guarde as alterações.
  5. Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Reveja a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expetativas:
    terraform plan

    Faça as correções necessárias à configuração.

  2. Aplique a configuração do Terraform executando o seguinte comando e introduzindo yes no comando:
    terraform apply

    Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).

  3. Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.

Eliminar as alterações

Para eliminar as alterações, faça o seguinte:

  1. Para desativar a proteção contra eliminação, no ficheiro de configuração do Terraform, defina o argumento deletion_protection como false.
    deletion_protection =  "false"
  2. Aplique a configuração do Terraform atualizada executando o seguinte comando e introduzindo yes no comando:
    terraform apply
  1. Remova os recursos aplicados anteriormente com a sua configuração do Terraform executando o seguinte comando e introduzindo yes no comando:

    terraform destroy

REST v1

Para definir uma flag para uma base de dados existente:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Corpo JSON do pedido:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Se existirem flags configuradas para a base de dados, modifique o comando anterior para as incluir. O comando PATCH substitui as flags existentes pelas especificadas no pedido.

REST v1beta4

Para definir uma flag para uma base de dados existente:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corpo JSON do pedido:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Se existirem flags configuradas para a base de dados, modifique o comando anterior para as incluir. O comando PATCH substitui as flags existentes pelas especificadas no pedido.

Limpe todas as flags para os respetivos valores predefinidos

Consola

  1. Na Google Cloud consola, selecione o projeto que contém a instância do Cloud SQL para a qual quer limpar todas as flags.
  2. Abra a instância e clique em Editar.
  3. Abra a secção Indicadores da base de dados.
  4. Clique no X junto a todas as denúncias apresentadas.
  5. Clique em Guardar para guardar as alterações.

gcloud

Limpe todos os sinalizadores para os respetivos valores predefinidos numa instância:

gcloud sql instances patch INSTANCE_NAME \
--clear-database-flags

É-lhe pedido que confirme que a instância vai ser reiniciada.

REST v1

Para limpar todas as flags de uma instância existente:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Corpo JSON do pedido:

{
  "settings":
  {
    "databaseFlags": []
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

REST v1beta4

Para limpar todas as flags de uma instância existente:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corpo JSON do pedido:

{
  "settings":
  {
    "databaseFlags": []
  }
}

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Determine que flags de base de dados foram definidas para uma instância

Para ver que flags foram definidas para uma instância do Cloud SQL:

Consola

  1. Na Google Cloud consola, selecione o projeto que contém a instância do Cloud SQL para a qual quer ver as flags da base de dados que foram definidas.
  2. Selecione a instância para abrir a respetiva página Vista geral da instância.

    As flags da base de dados que foram definidas são apresentadas na secção Flags da base de dados.

gcloud

Veja o estado da instância:

gcloud sql instances describe INSTANCE_NAME

Na saída, as flags da base de dados são apresentadas sob o nome da coleção settings.databaseFlags Para mais informações acerca da representação das flags no resultado, consulte Representação do recurso Instances.

REST v1

Para listar as flags configuradas para uma instância:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Na saída, procure o campo databaseFlags.

REST v1beta4

Para listar as flags configuradas para uma instância:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • project-id: o ID do projeto
  • instance-id: o ID da instância

Método HTTP e URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Para enviar o seu pedido, expanda uma destas opções:

Deve receber uma resposta JSON semelhante à seguinte:

Na saída, procure o campo databaseFlags.

Sinalizadores suportados

O Cloud SQL suporta apenas as flags indicadas nesta secção.

Flag do Cloud SQL Tipo
Valores aceitáveis e notas
Reiniciar
Necessário?
1204 (sinalizador de rastreio) boolean
on | off
Não
1222 (sinalizador de rastreio) boolean
on | off
Não
1224 (sinalizador de rastreio) boolean
on | off
Não
2528 (sinalizador de rastreio) boolean
on | off
Não
3205 (sinalizador de rastreio) boolean
on | off
Não
3226 (sinalizador de rastreio) boolean
on | off
Não
3625 (sinalizador de rastreio) boolean
on | off
Sim
4199 (sinalizador de rastreio) boolean
on | off
Não
4616 (sinalizador de rastreio) boolean
on | off
Não
7806 (sinalizador de rastreio) boolean
on | off
Sim
access check cache bucket count integer
065536
Não
aceda à quota de cache de verificação integer
02147483647
Não
máscara de afinidade integer
21474836482147483647
Não
agent xps boolean
on | off
Não
O teclado numérico virtual automático está desativado boolean
on | off
Sim
cloud sql xe bucket name string
O nome do contentor tem de começar com o prefixo gs://.
Não
cloud sql xe output total disk size (mb) integer
10512
Não
cloud sql xe file retention (mins) integer
010080
Não
cloud sql xe upload interval (mins) integer
160
Não
cloudsql enable linked servers boolean
on | off
Não
limite de custo para paralelismo integer
032767
Não
autenticação de base de dados autónoma boolean
on | off
Não
cross db ownership chaining boolean
on | off
Não
Limite do cursor integer
-12147483647
Não
idioma predefinido do texto completo integer
02147483647
Não
idioma predefinido integer
032
Não
predefinição de rastreio ativada boolean
on | off
Não
não permitir resultados de acionadores boolean
on | off
Não
scripts externos ativados boolean
on | off
Sim
Largura de banda de rastreio de ft (máximo) integer
032767
Não
Largura de banda de rastreio de ft (mín.) integer
032767
Não
ft notify bandwidth (max) integer
032767
Não
ft notify bandwidth (min) integer
032767
Não
Fator de preenchimento (%) integer
0100
Não
index create memory (kb) integer
7042147483647
Não
fechaduras integer
50002147483647
Sim
grau máximo de paralelismo (MAXDOP) integer
032767
Não
max server memory (mb) integer
1000 ... 2147483647
O Cloud SQL pode definir um valor para este sinalizador nas instâncias, com base nos valores recomendados pela Microsoft. Para mais informações, consulte o artigo Flags especiais.
Não
max text repl size (b) integer
-12147483647
Não
max worker threads integer
12865535
Não
acionadores aninhados boolean
on | off
Não
otimizar para cargas de trabalho ad hoc boolean
on | off
Não
ph timeout (s) integer
13600
Não
query governor cost limit integer
02147483647
Não
Tempo de espera da consulta (s) integer
-12147483647
Não
Intervalo de recuperação (min) integer
032767
Não
acesso remoto boolean
on | off
Sim
remote login timeout (s) integer
02147483647
Não
remote query timeout (s) integer
02147483647
Não
transformar palavras de ruído boolean
on | off
Não
limite do ano com dois dígitos integer
17539999
Não
associações de utilizadores integer
0, 10 ... 32767
Sim
opções do utilizador integer
032767
Não

Sinalizações especiais

Esta secção contém informações adicionais sobre as flags do Cloud SQL para SQL Server.

max degree of parallelism (MAXDOP)

Max degree of parallelism (MAXDOP) é uma flag de base de dados da Microsoft disponível para utilização no Cloud SQL para SQL Server. Esta flag permite-lhe limitar o número máximo de threads usados quando executa uma única consulta num plano paralelo.

Se for deixado com o valor predefinido de 0, a instância da base de dados usa todos os processadores disponíveis. No entanto, isto pode nem sempre ser eficiente ou mesmo prático se estiver a gerir instâncias com centenas de bases de dados.

Recomendamos que siga as recomendações da documentação da Microsoft ao definir o valor da flag, que pode variar com base no número de nós NUMA e no número de processadores lógicos disponíveis.

Pode verificar a configuração do nó NUMA através da vista de gestão dinâmica (DMV) de sys.dm_os_sys_info. Para verificar a configuração do nó NUMA, use um fragmento do código semelhante ao seguinte:

      SELECT socket_count,cores_per_socket,numa_node_count 
FROM sys.dm_os_sys_info

Embora possa usar MAXDOP para limitar o número máximo de processadores que quer permitir para a execução de planos paralelos, também pode usar a funcionalidade limite de custo para paralelismo para indicar o custo mínimo que quer definir para um único processador antes de expandir as operações paralelas para outro processador. Estas funcionalidades permitem-lhe controlar melhor a eficiência e o custo da execução de planos paralelos.

Os valores recomendados para estas funcionalidades variam caso a caso e são influenciados pelas necessidades de carga de trabalho do servidor e da aplicação.

Para obter ajuda na determinação dos melhores valores de MAXDOP e limite de custo para paralelismo para os seus servidores, consulte os seguintes recursos:

A alteração do valor predefinido ajuda a resolver os seguintes potenciais problemas:

  • Se a flag max degree of parallelism (MAXDOP) estiver definida como 0, as instâncias ou as aplicações cliente que requerem transferências do SharePoint falham. A transferência do SharePoint executa uma verificação prévia que requer um valor numérico para a flag e não aceita um valor inferior a 1.
  • Se deixar a flag MAXDOP com o valor predefinido de 0, indica efetivamente que não existe nenhum limite e que todos os processadores disponíveis podem ser usados para operações paralelas. Embora este valor possa ser adequado para servidores que executam rotineiramente pequenas consultas, pode representar um problema de custo se também precisar de executar periodicamente consultas muito grandes.

Com a flag max degree of parallelism (MAXDOP), pode controlar o número de threads em três níveis:

  • Ao nível da instância, usando flags da base de dados
  • Âmbito da base de dados, usando TSQL
  • Ao nível da consulta, através de sugestões de consultas

Tenha em atenção que, se o tamanho da instância for alterado, o valor do sinalizador permanece inalterado.

max server memory (mb)

O sinalizador max server memory (mb) limita a quantidade de memória que o Cloud SQL pode atribuir aos respetivos conjuntos internos.

Recomendamos que não configure um valor para esta flag e que permita que o Cloud SQL faça a gestão do valor por si. Se tiver de gerir manualmente este valor, como recomendação geral, defina o valor max server memory (mb) para aproximadamente 80% da memória disponível para ajudar a impedir que o SQL Server consuma toda a memória.

Por outro lado, para instâncias com grandes quantidades de memória, 80% da memória disponível pode ser um valor demasiado baixo e pode levar a uma utilização desperdiçada da memória.

Se não definir um valor para esta flag, o Cloud SQL gere o valor automaticamente com base no tamanho da RAM da sua instância. Além disso, se redimensionar a instância, o Cloud SQL ajusta automaticamente o valor da flag para cumprir as nossas recomendações para o novo tamanho da instância. Esta operação de redimensionamento também remove qualquer valor definido manualmente para esta flag. Isto ajuda a sua base de dados a usar os recursos de forma mais eficaz, ajudando a evitar a atribuição excessiva, reduzindo a probabilidade de uma falha devido a problemas de falta de memória e ajudando a evitar a degradação do desempenho da sua instância.

Para mais informações, consulte os artigos Memória máxima do servidor e Otimize a utilização elevada de memória.

Resolução de problemas

Problema Resolução de problemas
Quer modificar o fuso horário de uma instância do Cloud SQL.

Para saber como atualizar o fuso horário de uma instância, consulte o artigo Definições da instância.

No Cloud SQL para SQL Server, pode usar a função AT TIME ZONE para conversões de tempo e muito mais. Para mais informações sobre esta função, consulte AT TIME ZONE (Transact-SQL).

O que se segue?