Todos os produtos
Search
Central de documentação

PolarDB:FAQ

Última atualização: Jun 28, 2026

Este tópico responde às perguntas frequentes sobre o PolarDB for PostgreSQL.

Informações básicas

  • O que é o PolarDB?

    O PolarDB é um serviço de banco de dados relacional baseado em nuvem, implantado em data centers distribuídos por mais de 10 regiões ao redor do mundo. Ele oferece serviços de banco de dados online prontos para uso. O PolarDB é totalmente compatível com o PostgreSQL. Por padrão, um cluster do PolarDB fornece capacidade de armazenamento de até 500 TB.

    Nota

    O PolarStore (PSL4/PSL5) oferece recursos de armazenamento na escala de petabytes. Caso tenha essa necessidade, entre em contato conosco para reservar os recursos necessários.

  • Por que o PolarDB supera os bancos de dados tradicionais?

    Em comparação aos bancos de dados tradicionais, o PolarDB armazena centenas de terabytes de dados e disponibiliza uma ampla variedade de recursos, como alta disponibilidade, alta confiabilidade, upgrades e downgrades elásticos rápidos e backups sem bloqueio. Para obter mais informações, consulte Benefícios.

  • Quando o PolarDB foi lançado? Quando ficou disponível para uso comercial?

    O PolarDB foi lançado para preview público em setembro de 2017 e tornou-se disponível para uso comercial em março de 2018.

  • O que são clusters e nós?

    A PolarDB Cluster Edition utiliza uma arquitetura de cluster multi-nó. Um cluster possui um nó primário e vários nós somente leitura. Um único cluster do PolarDB pode ser implantado em várias zonas, mas não em várias regiões. O serviço PolarDB é gerenciado e cobrado com base em clusters. Para obter mais informações, consulte o Glossário.

  • Quais linguagens de programação são suportadas?

    O PolarDB suporta linguagens de programação como Java, Python, PHP, Golang, C, C++, .NET e Node.js.

  • Quais mecanismos de armazenamento são suportados?

    O PolarDB suporta quatro edições. Os itens a seguir descrevem os mecanismos de armazenamento suportados pelas diferentes edições:

    • Todas as tabelas no Cluster Edition e na Single Node Edition são armazenadas no mecanismo de armazenamento InnoDB. Ao criar uma tabela, o converte automaticamente mecanismos não-InnoDB, como MyISAM, Memory e CSV, para o mecanismo InnoDB. Portanto, as tabelas que não estão armazenadas no mecanismo InnoDB podem ser migradas para o conforme esperado.

    • Por padrão, a X-Engine Edition utiliza o X-Engine. Esse mecanismo oferece recursos avançados de compactação de dados e permite o uso de bancos de dados de arquivamento com baixo custo de armazenamento. Para obter mais informações, consulte a X-Engine Edition.

  • Instâncias secundárias autogerenciadas são suportadas? Como implementar uma arquitetura primária/secundária?

    Sim, instâncias secundárias autogerenciadas são suportadas. Para implementar uma arquitetura primária/secundária, ative o recurso de binary log para sincronizar dados de um cluster do com uma instância MySQL autogerenciada. Para facilitar a manutenção posterior, recomendamos o uso do Data Transmission Service (DTS) para sincronizar os dados. Para obter mais informações, consulte Sincronizar dados do PolarDB for MySQL para o RDS for MySQL.

  • O PolarDB é um banco de dados distribuído?

    Sim, o PolarDB é um cluster de armazenamento distribuído baseado no protocolo Parallel Raft. O mecanismo de computação consiste em 1 a 16 nós de computação distribuídos em servidores diferentes. Um cluster suporta capacidade máxima de armazenamento de 200 TB, além de até 88 núcleos e 710 GB de memória. É possível dimensionar horizontalmente os recursos de armazenamento e computação dinamicamente e online. Os serviços continuam funcionando normalmente durante o dimensionamento.

  • Preciso adquirir o middleware de banco de dados PolarDB-X para implementar sharding após comprar o PolarDB?

    Sim, é necessário adquirir o middleware de banco de dados PolarDB-X para implementar sharding após a compra do PolarDB.

  • O PolarDB suporta particionamento de tabelas?

    Sim, o PolarDB suporta particionamento de tabelas.

  • O PolarDB inclui automaticamente um mecanismo de particionamento?

    O PolarDB implementa o particionamento na camada de armazenamento. Esse processo é transparente e imperceptível para os usuários.

  • Qual é o tamanho máximo de dados que uma única tabela pode armazenar no PolarDB em comparação ao MySQL nativo?

    O PolarDB não limita o tamanho de tabelas individuais. No entanto, o tamanho das tabelas é limitado pelo espaço do disco onde estão armazenadas. Para obter mais informações, consulte os Limites.

Compatibilidade

  • O PolarDB for MySQL é compatível com o MySQL Community Edition?

    Sim, o é totalmente compatível com o MySQL Community Edition.

  • Quais níveis de isolamento de transação são suportados?

    O suporta três níveis de isolamento: READ_UNCOMMITTED, READ_COMMITTED e REPEATABLE_READ. O nível de isolamento padrão é READ_COMMITTED. O nível de isolamento SERIALIZABLE não é suportado.

  • Os resultados da consulta da instrução SHOW PROCESSLIST no PolarDB for MySQL são iguais aos do MySQL Community Edition?

    Se você usar um endpoint primário para executar a instrução SHOW PROCESSLIST, os resultados da consulta serão idênticos. Se utilizar um endpoint de cluster para executar a instrução SHOW PROCESSLIST, os resultados diferem entre o PolarDB for MySQL e o MySQL Community Edition. Nos resultados da consulta dessa instrução no PolarDB for MySQL, é possível encontrar vários registros com o mesmo ID de thread. Cada um desses registros corresponde a um nó no cluster do .

  • O mecanismo de bloqueio do PolarDB for MySQL é diferente do MySQL Community Edition?

    Sim, o mecanismo de bloqueio do PolarDB for MySQL difere do MySQL Community Edition. O usa redo logs para sincronizar os bloqueios exclusivos de metadados (MDLs) envolvidos em operações de linguagem de definição de dados (DDL) com os nós somente leitura. Os nós somente leitura mantêm os bloqueios até que as operações DDL sejam concluídas. Isso impede que outros threads de usuário nos nós somente leitura acessem os dados armazenados nas tabelas enquanto as operações DDL estão em andamento. O PolarDB for MySQL difere do MySQL Community Edition em termos de armazenamento de dados. No , os nós primários e os nós somente leitura compartilham os dados armazenados. Como resultado, quando os nós primários executam operações DDL, os nós somente leitura podem recuperar os dados intermediários gerados por essas operações, causando um erro.

  • O formato do binary log do PolarDB for MySQL é igual ao formato nativo do binary log do MySQL?

    Sim, o formato do binary log do PolarDB for MySQL é idêntico ao formato nativo do binary log do MySQL.

  • O performance schema e o sys schema são suportados?

    Sim, tanto o performance schema quanto o sys schema são suportados.

  • As estatísticas de tabela no PolarDB for MySQL são consistentes com as do MySQL Community Edition?

    Sim, as estatísticas de tabela no nó primário de um cluster do são consistentes com as do MySQL Community Edition. Cada atualização das estatísticas de tabela no nó primário é sincronizada com os nós somente leitura para garantir que os planos de execução permaneçam consistentes entre o nó primário e os nós somente leitura. Também é possível executar a operação ANALYZE TABLE nos nós somente leitura para carregar proativamente as estatísticas mais recentes dos discos.

  • O PolarDB suporta transações de arquitetura estendida (XA)? O PolarDB for MySQL suporta transações XA da mesma forma que o sistema MySQL nativo?

    Sim, o PolarDB for MySQL suporta transações XA da mesma maneira que o sistema MySQL nativo.

  • O PolarDB suporta índices de texto completo?

    Sim, o PolarDB suporta índices de texto completo.

    Nota

    Ao consultar dados usando índices de texto completo, caches de índice são utilizados nos nós somente leitura. Devido a esses caches, não é possível recuperar os dados mais recentes com base nos índices. Recomendamos o uso de endpoints primários para ler e gravar dados com base em índices de texto completo. Isso garante a recuperação dos dados mais recentes.

  • O Percona Toolkit é suportado?

    Sim, o Percona Toolkit é suportado. No entanto, recomendamos o uso de DDL online.

  • O gh-ost é suportado?

    Sim, o gh-ost é suportado. Contudo, recomendamos o uso de DDL online.

Faturamento

  • Quais são os itens faturáveis de um cluster do PolarDB?

    Os itens faturáveis incluem espaço de armazenamento, nós de computação, recurso de backup de dados (com cota gratuita) e o recurso SQL Explorer (opcional). Para obter mais informações, consulte Especificações e preços.

  • Quais arquivos são armazenados no espaço de armazenamento sujeito a cobrança?

    O espaço de armazenamento sujeito a cobrança armazena arquivos de tabelas de banco de dados, arquivos de índice, arquivos de undo log, arquivos de redo log, arquivos de slowlog e alguns arquivos de sistema. Para obter mais informações, consulte a Especificações e preços.

  • Como utilizar os planos de armazenamento do PolarDB?

    É possível adquirir planos de armazenamento para deduzir as taxas de armazenamento de clusters que utilizam o método de faturamento por assinatura ou pagamento conforme o uso. Por exemplo, se você tiver três clusters e cada um possuir capacidade de armazenamento de 40 GB, a capacidade total será de 120 GB. Os três clusters podem compartilhar um plano de armazenamento de 100 GB. A cobrança pelos 20 GB excedentes de espaço de armazenamento ocorre com base no pagamento conforme o uso. Para obter mais informações, consulte Adquirir um plano de armazenamento.

Acesso ao cluster (divisão de leitura/gravação)

  • Como implementar a divisão de leitura/gravação no PolarDB?

    Basta utilizar um endpoint de cluster na sua aplicação para que a divisão de leitura/gravação seja implementada com base no modo de leitura/gravação especificado. Para obter mais informações, consulte Configurar o PolarProxy.

  • Quantos nós somente leitura são suportados em um cluster do PolarDB?

    O PolarDB utiliza uma arquitetura de cluster distribuído. Um cluster consiste em um nó primário e até 15 nós somente leitura. Pelo menos um nó somente leitura é necessário para garantir alta disponibilidade.

  • Por que as cargas estão desequilibradas entre os nós somente leitura?

    Uma possível razão é a existência de poucas conexões com os nós somente leitura. Outro motivo possível é que um dos nós somente leitura não foi especificado como tal durante a criação de um endpoint de cluster personalizado.

  • Quais são as causas de cargas pesadas ou leves no nó primário?

    Cargas pesadas no nó primário podem ocorrer devido aos seguintes motivos: 1. O endpoint primário é usado para conectar suas aplicações ao cluster. 2. O nó primário aceita solicitações de leitura. 3. Existe um grande número de solicitações de transação. 4. As solicitações são roteadas para o nó primário devido a um alto atraso de replicação primário/secundário. 5. Solicitações de leitura são roteadas para o nó primário devido a exceções nos nós somente leitura.

    Uma possível causa para cargas leves no nó primário é a ativação do recurso Offload Reads from Primary Node.

  • Como reduzir as cargas no nó primário?

    Utilize os métodos a seguir para reduzir as cargas no nó primário:

    • Use um endpoint de cluster para se conectar a um cluster do PolarDB. Para obter mais informações, consulte Configurar o PolarProxy.

    • Caso um grande número de transações cause cargas pesadas no nó primário, ative o recurso de divisão de transações no console. Dessa forma, algumas consultas dentro das transações serão roteadas para os nós somente leitura. Para obter mais informações, consulte Divisão de leitura/gravação.

    • Se as solicitações estiverem sendo roteadas para o nó primário devido a atrasos de replicação, reduza o nível de consistência. Por exemplo, utilize o nível de consistência eventual. Para obter mais informações, consulte Divisão de leitura/gravação.

    • Se o nó primário aceitar solicitações de leitura, as cargas nesse nó também podem ficar pesadas. Nesse caso, desative o recurso que permite ao nó primário aceitar solicitações de leitura no console. Isso reduz o número de solicitações de leitura roteadas para o nó primário .

  • Por que não consigo recuperar imediatamente os dados recém-inseridos?

    A causa provável é que o nível de consistência especificado não permite a recuperação imediata dos dados recém-inseridos. Os endpoints de cluster do PolarDB suportam os seguintes níveis de consistência:

    • Consistência eventual: Este nível não garante a recuperação imediata dos dados recém-inseridos, independentemente de serem acessados pela mesma sessão (conexão) ou por sessões diferentes.

    • Consistência de sessão: Garante a recuperação imediata dos dados recém-inseridos dentro da mesma sessão.

    • Consistência global: Assegura a recuperação imediata dos dados mais recentes, seja na mesma sessão ou em sessões diferentes.

    Nota

    Um nível de consistência elevado resulta em cargas pesadas no nó primário, comprometendo seu desempenho. Tenha cuidado ao selecionar o nível de consistência. Na maioria dos cenários, o nível de consistência de sessão garante a disponibilidade do serviço. Para algumas instruções SQL que exigem consistência forte, adicione a dica /* FORCE_MASTER */ às instruções SQL para atender aos requisitos de consistência. Para obter mais informações, consulte Níveis de consistência.

  • Como forçar a execução de uma instrução SQL no nó primário?

    Ao utilizar um endpoint de cluster, adicione /* FORCE_MASTER */ ou /* FORCE_SLAVE */ antes de uma instrução SQL para forçar o destino do roteamento. Para obter mais informações, consulte Divisão de leitura/gravação.

    • /* FORCE_MASTER */ serve para rotear solicitações obrigatoriamente para o nó primário. Este método aplica-se a cenários específicos onde é necessária consistência forte para solicitações de leitura.

    • /* FORCE_SLAVE */ serve para rotear solicitações obrigatoriamente para um nó somente leitura. Este método aplica-se a cenários onde o proxy do PolarDB exige que sintaxes especiais sejam roteadas para um nó somente leitura para garantir precisão. Por exemplo, ao usar este método, instruções que chamam stored procedures e usam multistatement são roteadas para o nó primário por padrão.

    Nota
    • Para executar a instrução anterior contendo a dica na linha de comando oficial do MySQL, adicione o parâmetro -c na instrução. Caso contrário, a dica se tornará inválida porque a linha de comando oficial do MySQL filtra as dicas. Para obter mais informações, consulte Opções do cliente mysql.

    • As dicas possuem a maior prioridade para roteamento e não são limitadas por níveis de consistência ou divisão de transações. Antes de usar dicas, avalie os impactos no seu negócio.

    • As dicas não podem conter instruções que alterem variáveis de ambiente, como /*FORCE_SLAVE*/ set names utf8;. Esse tipo de instrução pode causar resultados de consulta inesperados.

  • Posso atribuir endpoints diferentes para serviços diferentes? Posso usar endpoints distintos para isolar meus serviços?

    Sim, é possível criar vários endpoints personalizados e atribuí-los a serviços diferentes. Se os nós subjacentes forem diferentes, os endpoints de cluster personalizados poderão isolar os serviços sem que um afete o outro. Para obter mais informações sobre como criar um endpoint personalizado, consulte Configurar o PolarProxy.

  • Como criar separadamente um endpoint de nó único para um dos nós somente leitura quando existem vários nós?

    A criação de um endpoint de nó único só é possível se o parâmetro Read/write Mode do endpoint de cluster estiver definido como Read Only e o cluster possuir três ou mais nós. Para obter mais informações, consulte Configurar o PolarProxy.

    Aviso

    No entanto, se você criar um endpoint de nó único para um nó somente leitura e esse nó apresentar falha, o endpoint de nó único poderá ficar indisponível por até 1 hora. Recomendamos não criar endpoints de nó único em seu ambiente de produção.

  • Qual é o número máximo de endpoints de nó único que posso criar em um cluster?

    Se o seu cluster tiver três nós, será possível criar um endpoint de nó único para apenas um dos nós somente leitura. Se o cluster tiver quatro nós, você poderá criar endpoints de nó único para dois dos nós somente leitura, um para cada. Regras semelhantes se aplicam se o cluster tiver cinco ou mais nós.

  • Os nós somente leitura apresentam carga mesmo quando uso apenas o endpoint primário. O endpoint primário suporta divisão de leitura/gravação?

    Não, o endpoint primário não suporta divisão de leitura/gravação. Ele se conecta sempre e exclusivamente ao nó primário. Os nós somente leitura podem apresentar um pequeno número de consultas por segundo (QPS). Isso é normal e não tem relação com o endpoint primário.

Gerenciamento e manutenção

  • Como adicionar campos e índices online?

    Ferramentas como o DDL online nativo do MySQL, pt-osc e gh-ost permitem adicionar campos e índices online. Recomendamos o uso do DDL online nativo do MySQL.

    Nota

    Ao usar o pt-osc, não utilize parâmetros de verificação de consistência de dados entre nós primários e somente leitura, como o parâmetro recursion-method. Isso ocorre porque o pt-osc verifica a consistência de dados entre nós primários e somente leitura com base na replicação de binlog. Porém, o PolarDB utiliza replicação física e não suporta replicação de binlog.

  • O recurso de bulk insert é suportado?

    Sim, o recurso de bulk insert é suportado.

  • Posso fazer bulk insert de dados se escrever apenas em um nó exclusivo de gravação? Qual é o número máximo de valores que posso inserir de uma vez?

    Sim, é possível realizar bulk insert de dados escrevendo apenas em um nó exclusivo de gravação. O número máximo de valores que podem ser inseridos de uma vez é determinado pelo valor do parâmetro max_allowed_packet. Para obter mais informações, consulte Replicação e max_allowed_packet.

  • Posso usar endpoints de cluster para realizar a operação de bulk insert?

    Sim, endpoints de cluster podem ser usados para realizar operações de bulk insert.

  • Ocorre atraso de replicação ao replicar dados do nó primário para os nós somente leitura?

    Sim, ocorre um atraso de replicação de alguns milissegundos.

  • Quando o atraso de replicação aumenta?

    O atraso de replicação aumenta nos seguintes cenários:

    • O nó primário processa um grande volume de solicitações de gravação e gera excesso de redo logs. Consequentemente, esses redo logs não conseguem ser reproduzidos nos nós somente leitura a tempo.

    • Para processar cargas pesadas, os nós somente leitura ocupam muitos recursos destinados à reprodução de redo logs.

    • O sistema lê e grava redo logs em baixa velocidade devido a gargalos de I/O.

  • Como garantir a consistência dos resultados de consulta se ocorrer atraso de replicação?

    Utilize um endpoint de cluster e selecione um nível de consistência apropriado para ele. Os níveis de consistência, listados em ordem decrescente, são: consistência de sessão e consistência eventual. Para obter mais informações, consulte Configurar o PolarProxy.

  • O objetivo de ponto de recuperação (RPO) pode ser zero se um único nó falhar?

    Sim, o RPO pode ser zero caso um único nó falhe.

    Se você mantiver os valores padrão dos parâmetros do cluster PolarDB, o RPO não será zero. Modifique o valor do parâmetro sychronous_commit para definir o RPO como zero. Para obter mais informações sobre os valores padrão de parâmetros específicos, consulte Valores padrão de parâmetros do cluster.

  • Como as especificações dos nós são atualizadas no backend, por exemplo, de 2 núcleos e 8 GB de memória para 4 núcleos e 16 GB de memória? Quais são os impactos dessa atualização nos meus serviços?

    Os nós de proxy e de banco de dados do PolarDB devem ser atualizados para as configurações mais recentes. Um método de atualização contínua (rolling upgrade) é utilizado para atualizar vários nós e minimizar os impactos nos seus serviços. Cada atualização leva cerca de 10 a 15 minutos. Os impactos nos serviços duram no máximo 30 segundos. Durante esse período, podem ocorrer de um a três erros transitórios de conexão. Para obter mais informações, consulte Alterar configuração.

  • Quanto tempo leva para adicionar um nó? Meus serviços são afetados durante a adição do nó?

    A adição de um nó leva cerca de 5 minutos. Seus serviços não são afetados durante esse processo. Para obter mais informações sobre como adicionar um nó, consulte Adicionar um nó somente leitura.

    Nota

    Após adicionar um nó somente leitura, uma sessão de leitura é estabelecida para encaminhar solicitações de leitura para esse novo nó. Uma conexão de divisão de leitura/gravação criada antes da adição do nó somente leitura não encaminhará solicitações para ele. É necessário fechar a conexão e estabelecê-la novamente. Por exemplo, reinicie a aplicação para restabelecer a conexão.

  • Quanto tempo leva para atualizar uma versão secundária do kernel para a versão de revisão mais recente? Meus serviços são afetados após a conclusão da atualização?

    O PolarDB utiliza um método de atualização contínua para atualizar vários nós, minimizando os impactos nos seus serviços. Na maioria dos casos, uma atualização leva menos de 30 minutos para ser concluída. O PolarProxy ou o mecanismo de banco de dados é reiniciado durante a atualização, o que pode interromper os serviços. Recomendamos realizar a atualização fora dos horários de pico. Certifique-se de que sua aplicação possa se reconectar automaticamente ao banco de dados. Para obter mais informações, consulte Atualizar a versão secundária de um cluster PolarDB.

  • Como um failover automático é implementado?

    O PolarDB utiliza uma arquitetura de cluster de alta disponibilidade ativo-ativo. Essa arquitetura suporta failovers automáticos entre o nó primário (que suporta leituras e gravações) e os nós somente leitura. O sistema elege automaticamente um novo nó primário. Cada nó em um cluster do PolarDB possui uma prioridade de failover. Essa prioridade determina a probabilidade de um nó ser eleito como primário durante um failover. Se vários nós tiverem a mesma prioridade de failover, todos terão a mesma probabilidade de serem eleitos como primários. Para obter mais informações, consulte Failover automático e switchover manual.

  • P: Qual é a arquitetura do proxy de banco de dados? Ele possui um mecanismo de failover? Como sua alta disponibilidade é garantida?

    R: O proxy de banco de dados utiliza uma arquitetura de alta disponibilidade com dois nós, distribuindo o tráfego uniformemente entre eles. O sistema verifica continuamente o status de integridade dos nós de proxy. Se uma falha for detectada, o sistema desconecta proativamente as conexões desse nó, e o nó saudável restante assume automaticamente todo o tráfego para garantir a continuidade do serviço. Simultaneamente, o sistema reconstrói e restaura automaticamente o nó de proxy com falha. Esse processo geralmente é concluído em cerca de 2 minutos. Durante esse período, o cluster de banco de dados permanece acessível.

    Em casos raros, as conexões com um nó com falha podem não ser desconectadas rapidamente e ficarem sem resposta. Para lidar com essas situações, configure políticas de timeout adequadas no lado do cliente, como socketTimeout e connectTimeout do JDBC. Isso permite que a camada de aplicação detecte e encerre prontamente conexões suspensas, melhorando ainda mais a tolerância a falhas e a eficiência de resposta do sistema.

Backup e restauração

  • Como o PolarDB faz backup dos dados?

    O PolarDB utiliza snapshots para fazer backup dos dados. Para obter mais informações, consulte Método 2: Backup manual.

  • Qual é a velocidade de restauração de um banco de dados?

    Leva 40 minutos para restaurar ou clonar 1 TB de dados em um banco de dados com base em conjuntos de backup ou snapshots. Para restaurar dados até um ponto específico no tempo, é necessário incluir o tempo necessário para reproduzir os redo logs. A reprodução de 1 GB de dados de redo log leva cerca de 20 a 70 segundos. O tempo total de restauração é a soma do tempo necessário para restaurar os dados com base nos conjuntos de backup e o tempo necessário para reproduzir os redo logs.

Desempenho e capacidade

  • Por que o não apresenta melhorias significativas de desempenho quando comparado ao ApsaraDB RDS for MySQL?

    Antes de comparar o desempenho do com o do ApsaraDB RDS for MySQL, observe as considerações a seguir para obter resultados de comparação precisos e razoáveis:

    • Utilize o e o ApsaraDB RDS for MySQL com as mesmas especificações para comparar o desempenho.

    • Utilize o e o ApsaraDB RDS for MySQL da mesma versão para comparar o desempenho.

      Isso ocorre porque os mecanismos de implementação variam conforme a versão. Por exemplo, o MySQL 8.0 otimiza CPUs multi-core abstraindo threads separadamente, como Log_writer, log_fluser, log_checkpoint e log_write_notifier. No entanto, se poucos núcleos de CPU forem utilizados, o desempenho do MySQL 8.0 será inferior ao do MySQL 5.6 ou 5.7. Recomendamos não comparar o 5.6 com o ApsaraDB RDS for MySQL 5.7 ou 8.0, pois o otimizador do PolarDB for MySQL 5.6 não é tão avançado quanto o das versões posteriores.

    • Recomendamos simular as cargas de ambientes online reais ou usar o conjunto de benchmarks sysbench para comparar o desempenho. Isso torna os dados de desempenho obtidos mais próximos dos cenários online reais.

    • Evite usar uma única instrução SQL para comparar o desempenho de leitura entre o PolarDB for MySQL e o ApsaraDB RDS for MySQL.

      Isso ocorre porque o PolarDB utiliza uma arquitetura onde a computação é desacoplada do armazenamento, e a latência de rede afeta o tempo de resposta de uma única instrução SQL. Portanto, o desempenho de leitura do PolarDB for MySQL é inferior ao do ApsaraDB RDS for MySQL. A taxa de acerto de cache para um banco de dados online é superior a 99% na maioria dos casos. Apenas a primeira solicitação de leitura consome recursos de I/O, comprometendo o desempenho de leitura. As solicitações subsequentes não consomem recursos de I/O porque os dados já estão armazenados em um buffer pool. Para essas solicitações subsequentes, o PolarDB for MySQL e o ApsaraDB RDS for MySQL oferecem o mesmo desempenho de leitura.

    • Evite usar uma única instrução SQL para comparar o desempenho de gravação. Em vez disso, simule um ambiente online e realize testes de estresse.

      Recomendamos comparar os nós primários e os nós somente leitura do PolarDB com as instâncias primárias e as instâncias somente leitura do ApsaraDB RDS for MySQL. A replicação semissíncrona é implementada para as instâncias somente leitura no ApsaraDB RDS for MySQL. Isso se deve ao fato de a arquitetura do PolarDB usar o mecanismo de quorum para gravações de dados por padrão. Se os dados forem gravados em duas ou três das réplicas triplas, o sistema considera a operação de gravação bem-sucedida. O PolarDB implementa redundância de dados na camada de armazenamento e garante consistência forte e alta confiabilidade para a réplica tripla. Portanto, um método de comparação adequado é comparar o PolarDB for MySQL com o ApsaraDB RDS for MySQL onde a replicação semissíncrona (e não a assíncrona) esteja implementada.

    Para obter mais informações sobre os resultados da comparação de desempenho entre o e o ApsaraDB RDS for MySQL, consulte Comparação de desempenho: PolarDB for MySQL vs. ApsaraDB RDS for MySQL.

  • Por que um banco de dados excluído ocupa muito espaço de armazenamento?

    Isso ocorre porque os arquivos de redo log do banco de dados excluído ocupam espaço de armazenamento. Na maioria dos casos, os arquivos de redo log ocupam de 2 GB a 11 GB de espaço. Se um total de 11 GB estiver ocupado, 8 GB correspondem aos oito arquivos de redo log no buffer pool. Os 3 GB restantes são divididos igualmente entre o arquivo de redo log que está sendo gravado, o arquivo de redo log pré-criado e o arquivo de redo log mais recente.

    O parâmetro loose_innodb_polar_log_file_max_reuse especifica o número de arquivos de redo log no buffer pool. O valor padrão desse parâmetro é 8. Altere esse valor para reduzir o espaço de armazenamento ocupado pelos arquivos de log. Nesse caso, podem ocorrer flutuações periódicas de desempenho durante o processamento de cargas pesadas.

    loose_innodb_polar_log_file_max_reuse

  • Qual é o número máximo de tabelas? Qual é o limite superior para o número de tabelas se eu quiser garantir que o desempenho não seja comprometido?

    O número máximo de tabelas depende do número de arquivos. Para obter mais informações, consulte os Limites.

  • O particionamento de tabelas pode melhorar o desempenho de consulta do PolarDB?

    Na maioria dos casos, se a instrução de consulta SQL incidir sobre uma partição específica, o desempenho será melhorado.

  • Posso criar 10.000 bancos de dados no PolarDB? Qual é o limite superior para o número de bancos de dados?

    Sim, é possível criar 10.000 bancos de dados no PolarDB. O número máximo de bancos de dados que podem ser criados depende do número de arquivos. Para obter mais informações, consulte os Limites.

  • O número máximo de conexões depende do número de nós somente leitura? Posso aumentar o número máximo de conexões adicionando nós somente leitura?

    O número de nós somente leitura não tem relação com o número máximo de conexões. O limite máximo de conexões do PolarDB é determinado pelas especificações do nó. Para obter mais informações, consulte os . Atualize as especificações se precisar de mais conexões. Para obter mais informações, consulte Alteração manual de especificação.

  • Como as operações de entrada/saída por segundo (IOPS) são limitadas e isoladas? Os múltiplos nós de um cluster do PolarDB competem por recursos de I/O?

    O IOPS é definido para cada nó de um cluster do PolarDB com base nas especificações do nó. O IOPS de cada nó é isolado dos demais e não há interferência mútua.

  • O nó primário é afetado se o desempenho dos nós somente leitura for comprometido?

    Sim, o consumo de memória do nó primário aumenta ligeiramente se as cargas nos nós somente leitura forem excessivamente pesadas e o atraso de replicação aumentar.

  • Qual é o impacto no desempenho do banco de dados se eu ativar o recurso de binary log?

    Após ativar o recurso de binary log, apenas o desempenho de gravação e atualização (INSERT, UPDATE e DELETE) é afetado. O desempenho de consulta (SELECT) não sofre alterações. Na maioria dos casos, se você ativar o binary log em um banco de dados com equilíbrio entre solicitações de leitura e gravação, o desempenho do banco de dados diminuirá em no máximo 10%.

  • Qual é o impacto no desempenho do banco de dados se eu ativar o recurso SQL Explorer (auditoria completa de logs SQL)?

    O desempenho do banco de dados não é afetado ao ativar o recurso SQL Explorer.

  • Qual protocolo de rede de alta velocidade o PolarDB utiliza?

    O PolarDB utiliza Remote Direct Memory Access (RDMA) de porta dupla para garantir alto throughput de I/O entre nós de computação e nós de armazenamento, bem como entre réplicas de dados. Cada porta fornece uma taxa de dados de até 25 Gbit/s com baixa latência.

  • Qual é a largura de banda máxima que posso usar ao acessar o PolarDB pela Internet?

    Ao acessar o PolarDB pela Internet, a largura de banda máxima é de 10 Gbit/s.

  • O que posso fazer se a reinicialização dos nós demorar muito?

    Um maior número de arquivos no cluster resulta em maior tempo de reinicialização dos nós. Nesse caso, defina o parâmetro innodb_fast_startup como ON para acelerar o processo de reinicialização. Para obter mais informações sobre como modificar o parâmetro, consulte Definir parâmetros de cluster e de nó.

Tabelas grandes

  • Quais são as vantagens das tabelas grandes no em relação aos discos locais de bancos de dados tradicionais?

    Uma tabela grande em um banco de dados do é dividida e armazenada em N servidores de armazenamento físico. Portanto, as operações de I/O dessa tabela são distribuídas por vários discos. O throughput geral (e não a latência de I/O) das operações de leitura de I/O no banco de dados PolarDB for MySQL é superior ao de um banco de dados onde todas as operações de I/O são agendadas para discos locais.

  • Como otimizar tabelas grandes?

    Recomendamos o uso de tabelas particionadas para otimizar tabelas grandes.

  • Quais são os cenários de uso de tabelas particionadas?

    Tabelas particionadas são úteis quando você deseja podar tabelas grandes para controlar a quantidade de dados verificados nas consultas, sem modificar o código da aplicação. Por exemplo, use tabelas particionadas para limpar dados históricos dos seus serviços em intervalos regulares. Exclua as partições criadas no mês mais antigo e crie partições para o próximo mês, retendo apenas os dados dos últimos seis meses.

  • Qual método é adequado para copiar uma tabela com grande volume de dados no mesmo banco de dados do , por exemplo, copiar todos os dados da tabela A para a tabela B?

    Execute a seguinte instrução SQL para copiar os dados diretamente:

    create table B as select * from A

Estabilidade

  • Posso otimizar conexões de curta duração do PHP em cenários de alta concorrência?

    Sim, é possível otimizar conexões de curta duração do PHP em cenários de alta concorrência. Para isso, ative o pool de conexões no nível de sessão nas configurações dos endpoints de cluster. Para obter mais informações, consulte Configurar o PolarProxy.

  • Como evitar que consultas SQL lentas reduzam o desempenho de todo o banco de dados?

    Se você utilizar clusters do 5.6 ou 8.0, utilize o recurso de controle de concorrência de instruções para implementar limitação de taxa e throttling em instruções SQL específicas. Para obter mais informações sobre esse recurso, consulte Controle de concorrência.

  • O PolarDB suporta o recurso de timeout de sessão ociosa?

    Sim, o PolarDB suporta o recurso de timeout de sessão ociosa. Altere o valor do parâmetro wait_timeout para especificar um período de timeout para sessões ociosas. Para obter mais informações, consulte Definir parâmetros de cluster e de nó.

  • Como identificar consultas SQL lentas?

    Identifique consultas SQL lentas utilizando os dois métodos a seguir:

    • Recupere consultas SQL lentas no console. Para obter mais informações, consulte Consulta SQL lenta.

    • Conecte-se a um cluster de banco de dados e execute a instrução show processlist; para encontrar as instruções SQL que levam muito tempo para serem executadas. Para obter mais informações sobre como se conectar a clusters de banco de dados, consulte Conectar-se a um cluster. Identify slow SQL queries

  • Como encerrar consultas SQL lentas?

    Após identificar uma consulta SQL lenta, localize o ID dessa consulta e execute o comando kill <Id> para encerrá-la. Terminate slow SQL queries