Quando a E/S de disco se torna um gargalo para sua instância ApsaraDB RDS for PostgreSQL, o recurso de aceleração de E/S direciona tabelas temporárias e arquivos para discos de cache de alta velocidade, melhorando o desempenho de consultas complexas em até 100%. Esse recurso é gratuito e não exige alterações na aplicação.
Como funciona
Os ESSDs gerais (Enterprise SSDs) utilizam uma arquitetura de armazenamento de três camadas, com discos de cache de alta velocidade como camada intermediária entre a memória e o armazenamento ESSD. O recurso de aceleração de E/S direciona dados temporários para essa camada de cache.
Sem a aceleração de E/S, todos os dados — incluindo tabelas temporárias e arquivos gerados durante a execução de consultas — ficam armazenados em discos em nuvem. Com a aceleração de E/S ativada, o executor de consultas separa os dados por tipo:
Dados não temporários (tabelas regulares, visualizações): leitura dos discos em nuvem para a memória para processamento, conforme o padrão.
Dados temporários (tabelas e arquivos temporários): leitura e gravação diretamente nos discos de cache.
O ApsaraDB RDS for PostgreSQL usa o tablespace rds_temp_tablespace para representar a camada de disco de cache. Objetos temporários criados sem atribuição explícita de tablespace são colocados automaticamente no rds_temp_tablespace após a definição do parâmetro temp_tablespaces.
O conteúdo do disco de cache não é durável. Os dados armazenados no rds_temp_tablespace são perdidos durante alterações de especificação da instância ou outras operações de migração de dados. Não armazene objetos de banco de dados não temporários neste tablespace.
Casos de uso
A aceleração de E/S é mais eficaz quando as consultas geram grandes volumes de dados temporários que excedem a memória disponível:
Ordenação, agrupamento, agregação e junções: operações que descarregam resultados intermediários no disco.
Consultas recursivas com expressões de tabela comuns (CTEs): CTEs que materializam grandes conjuntos de resultados intermediários.
Consultas ad hoc sem índices de suporte: filtros complexos ou agregações que exigem varreduras completas.
Consultas analíticas em tabelas grandes ou múltiplas tabelas: cargas de trabalho de relatórios e análises com altas demandas de E/S.
Cargas de trabalho com tabelas temporárias: qualquer lógica de aplicação que crie explicitamente tabelas temporárias.
Pré-requisitos
Antes de ativar a aceleração de E/S, verifique se sua instância atende a todos os requisitos abaixo:
|
Requisito |
Valor |
|
Método de faturamento |
Assinatura ou pagamento conforme o uso |
|
Versão do PostgreSQL |
11 ou posterior |
|
Versão secundária do mecanismo |
20231030 ou posterior |
|
Edição |
RDS High-availability Edition |
|
Tipo de produto |
Tipo de produto padrão |
|
Tipo de armazenamento |
ESSDs gerais |
|
Família de instâncias |
Família de instâncias de uso geral |
A instância também deve estar localizada em uma das seguintes regiões e zonas:
| Região | Zona |
|---|---|
| China (Chengdu) | Zone B |
| China (Beijing) | Zone I |
| China (Shanghai) | Zone M |
| Zone N | |
| China (Hangzhou) | Zone J |
Após ativar a I/O Acceleration na página de compra, confirme a disponibilidade na seção Zone and Network of Primary Node.
Ativar aceleração de E/S
Ativar ou desativar a aceleração de E/S causa uma interrupção de serviço de aproximadamente 30 segundos. Execute esta operação fora dos horários de pico.
Opção 1: Ativar ao criar uma instância (recomendado)
Ao criar uma instância RDS, configure os parâmetros para atender aos pré-requisitos listados acima e ative a I/O Acceleration.

Opção 2: Ativar em uma instância existente
Acesse a página Instances. Na barra de navegação superior, selecione a região onde a instância está localizada e clique em Configure General ESSD à direita de Storage Type.
Na seção Basic Information, clique em Configure General ESSD à direita de Storage Type.
-
Na caixa de diálogo, ative a I/O Acceleration.

Definir o parâmetro temp_tablespaces
Após ativar a aceleração de E/S, o tablespace rds_temp_tablespace é criado automaticamente. Defina o parâmetro temp_tablespaces como rds_temp_tablespace para que objetos temporários usem discos de cache por padrão.
Para obter instruções sobre como modificar parâmetros, consulte Modificar os parâmetros de uma instância ApsaraDB RDS for PostgreSQL.
Para aplicar a configuração apenas à sessão atual, execute:
SET temp_tablespace TO 'rds_temp_tablespace';
Para reverter para discos em nuvem, defina temp_tablespaces como ''.
Verificar a configuração
Conecte-se à instância (consulte Conectar-se a uma instância ApsaraDB RDS for PostgreSQL) e execute as seguintes instruções:
-- Create a regular table
CREATE TABLE test_table (di INT);
-- Create a temporary table
CREATE TEMPORARY TABLE test_temp_table (id INT);
-- Query which tablespace each table uses
SELECT
c.relname AS table_name,
COALESCE(t.spcname, 'pg_default') AS tablespace_name
FROM
pg_class c
JOIN
pg_namespace n ON c.relnamespace = n.oid
LEFT JOIN
pg_tablespace t ON c.reltablespace = t.oid
WHERE
c.relkind = 'r'
AND c.relname IN ('test_table', 'test_temp_table');
Saída esperada:
table_name | tablespace_name
------------------+---------------------
test_table | pg_default
test_temp_table | rds_temp_tablespace
(2 rows)
A presença de test_temp_table no rds_temp_tablespace confirma que a aceleração de E/S está ativa.
Observações de uso
O espaço do disco de cache é alocado com base no tipo da instância. Se o cache ficar cheio, o erro
ERROR: could not write to file "pg_tblspc/xxxx": No space left on deviceserá relatado para instruções que gravam dados temporários. Instruções SQL que operam em dados não temporários não são afetadas.Os dados no
rds_temp_tablespacenão são duráveis e são perdidos durante alterações de especificação da instância ou outras operações de migração de dados.
Solução de problemas
ERROR: No space left on device
Este erro indica que o tablespace rds_temp_tablespace está cheio. Resolva-o seguindo esta ordem:
Encerre a sessão atual e reconecte-se. A instância limpa arquivos temporários quando uma sessão termina. Execute novamente a instrução após a reconexão.
Retorne aos discos em nuvem definindo
temp_tablespacescomo''. Isso remove o limite do disco de cache, mas também elimina o benefício de desempenho da aceleração de E/S.
Próximos passos
Para consultar todos os tipos de armazenamento suportados pelo ApsaraDB RDS for PostgreSQL, veja Tipos de armazenamento.
Para obter uma visão geral dos ESSDs gerais e sua arquitetura de três camadas, consulte ESSDs gerais.
Se suas cargas de trabalho tiverem demandas de IOPS de pico imprevisíveis, considere ativar o I/O burst além da aceleração de E/S.