Armazenar dados temporários em um armazenamento de instância do RDS for Oracle - Amazon Relational Database Service

Armazenar dados temporários em um armazenamento de instância do RDS for Oracle

Use um armazenamento de instância para os espaços de tabela temporários e o Database Smart Flash Cache (o cache flash) em classes de instância de banco de dados do RDS for Oracle compatíveis.

Visão geral do armazenamento de instância do RDS for Oracle

Um armazenamento de instância fornece armazenamento temporário em nível de bloco para a instância de banco de dados do RDS for Oracle. Você pode usar um armazenamento de instância para armazenamento temporário de informações que mudam com frequência.

Um armazenamento de instância é baseado em dispositivos Non-Volatile Memory Express (NVMe) anexados fisicamente ao computador host. Esse armazenamento é otimizado para baixa latência, performance de E/S aleatória e throughput de leitura sequencial.

O tamanho do armazenamento de instância varia de acordo com o tipo de instância de banco de dados. Para obter mais informações sobre o armazenamento de instância, consulte Armazenamento de instância do Amazon EC2 no Amazon Elastic Compute Cloud Manual do usuário para instâncias do Linux.

Tipos de dados no armazenamento de instância do RDS for Oracle

Você pode colocar os seguintes tipos de dados temporários do RDS for Oracle em um armazenamento de instância:

Um espaço de tabela temporário

O Oracle Database usa espaços de tabela temporários para armazenar resultados de consultas intermediárias que não cabem na memória. Consultas maiores podem gerar grandes quantidades de dados intermediários que precisam ser armazenados temporariamente em cache, mas não precisam ser mantidos. Especificamente, um espaço de tabela temporário é útil para classificações, agregações de hash e uniões. Se sua instância de banco de dados do RDS for Oracle usar a Enterprise Edition ou a Standard Edition 2, você poderá colocar um espaço de tabela temporário em um armazenamento de instância.

O cache flash

O cache flash melhora a performance das leituras aleatórias de bloco único no caminho convencional. Uma prática recomendada é dimensionar o cache para acomodar a maior parte do conjunto de dados ativo. Se sua instância de banco de dados do RDS for Oracle usar a Enterprise Edition, você poderá colocar o cache flash em um armazenamento de instância.

Por padrão, um armazenamento de instância é configurado para um espaço de tabela temporário, mas não para o cache flash. Não é possível colocar arquivos de dados do Oracle e arquivos de log do banco de dados em um armazenamento de instância.

Benefícios do armazenamento de instância do RDS for Oracle

Você pode considerar o uso de um armazenamento de instância para armazenar arquivos e caches temporários que você pode perder. Se você quiser melhorar a performance do banco de dados ou se uma workload crescente estiver causando problemas de performance para seu armazenamento do Amazon EBS, considere escalar para uma classe de instância que seja compatível com um armazenamento de instância.

Ao colocar o espaço de tabela temporário e o cache flash em um armazenamento de instância, você obtém os seguintes benefícios:

  • Latências de leitura mais baixas

  • Throughput maior

  • Menor carga nos volumes do Amazon EBS

  • Custos mais baixos de armazenamento e snapshot devido à redução da carga do Amazon EBS

  • Menos necessidade de provisionar IOPS alta, possivelmente reduzindo o custo geral

Ao colocar o espaço de tabela temporário no armazenamento de instância, você aumenta imediatamente a performance das consultas que usam espaço temporário. Quando você coloca o cache flash no armazenamento de instância, as leituras de blocos em cache normalmente têm uma latência muito menor do que as leituras do Amazon EBS. O cache flash precisa ser “aquecido” antes de oferecer benefícios de performance. O cache se aquece sozinho porque o banco de dados grava blocos no cache flash à medida que eles saem do cache do buffer do banco de dados.

nota

Em alguns casos, o cache flash causa sobrecarga de performance devido ao gerenciamento do cache. Antes de ativar o cache flash em um ambiente de produção, recomendamos que você analise sua workload e teste o cache em um ambiente de teste.

Classes de instância compatíveis com o armazenamento de instância do RDS for Oracle

O Amazon RDS é compatível com o armazenamento de instância para as seguintes classes de instância de banco de dados:

  • db.m5d

  • db.r5d

  • db.x2idn

  • db.x2iedn

O RDS para Oracle é compatível com as classes de instância de banco de dados anteriores somente para o modelo de licenciamento BYOL. Para obter mais informações, consulte Classes de instância compatíveis com o RDS para Oracle e Traga a sua própria licença (BYOL) para EE e SE2.

Para ver o armazenamento total de instâncias para os tipos compatíveis de instância de banco de dados, execute o comando a seguir na CLI da AWS.

aws ec2 describe-instance-types \ --filters "Name=instance-type,Values=*5d.*large*" \ --query "InstanceTypes[?contains(InstanceType,'m5d')||contains(InstanceType,'r5d')][InstanceType, InstanceStorageInfo.TotalSizeInGB]" \ --output table

O comando anterior retorna o tamanho bruto do dispositivo para o armazenamento de instância. O RDS for Oracle usa uma pequena parte desse espaço para configuração. O espaço no armazenamento de instância que está disponível para espaços de tabela temporários ou para o cache flash é um pouco menor.

Versões de mecanismo compatíveis com o armazenamento de instância do RDS for Oracle

O armazenamento de instância é compatível com as seguintes versões de mecanismo do RDS for Oracle:

  • Versões 21.0.0.0.ru-2022-01.rur-2022-01.r1 ou Oracle Database 21c posterior

  • 19.0.0.0.ru-2021-10.rur-2021-10.r1 ou versões posteriores do Oracle Database 19c

Regiões da AWS compatíveis com o armazenamento de instância do RDS for Oracle

O armazenamento de instância está disponível em todas as Regiões da AWS onde um ou mais desses tipos de instância são compatíveis. Para obter mais informações sobre as classes de instância db.m5d e db.r5d, consulte Classes de instância de banco de dados . Para obter mais informações sobre as classes de instância compatíveis com o Amazon RDS para Oracle, consulte Classes de instância do RDS for Oracle.

Custo do armazenamento de instância do RDS para Oracle

O custo do armazenamento de instância é incorporado ao custo do armazenamento de instância ativado nas instâncias. Você não gera custos adicionais ao habilitar um armazenamento de instância em uma instância de banco de dados do RDS for Oracle. Para obter mais informações sobre instâncias ativadas em armazenamento de instância, consulte Classes de instância compatíveis com o armazenamento de instância do RDS for Oracle.

Ativar um armazenamento de instância do RDS for Oracle

Para ativar o armazenamento de instância para dados temporários do RDS for Oracle, siga um destes procedimentos:

Configurar um armazenamento de instância do RDS for Oracle

Por padrão, 100% do espaço de armazenamento de instância é alocado ao espaço de tabela temporário. Para configurar o armazenamento de instância para alocar espaço para o cache flash e o espaço de tabela temporário, defina os seguintes parâmetros no grupo de parâmetros de sua instância:

db_flash_cache_size={DBInstanceStore*{0,2,4,6,8,10}/10}

Esse parâmetro especifica a quantidade de espaço de armazenamento alocado para o cache flash. Esse parâmetro é válido apenas para o Oracle Database Enterprise Edition. O valor padrão é {DBInstanceStore*0/10}. Se você definir um valor diferente de zero para db_flash_cache_size, sua instância do RDS for Oracle ativará o cache flash após a reinicialização da instância.

rds.instance_store_temp_size={DBInstanceStore*{0,2,4,6,8,10}/10}

Esse parâmetro especifica a quantidade de espaço de armazenamento alocado para o espaço de tabela temporário. O valor padrão é {DBInstanceStore*10/10}. Esse parâmetro pode ser modificado para o Oracle Database Enterprise Edition e somente leitura para Standard Edition 2. Se você definir um valor diferente de zero para rds.instance_store_temp_size, o Amazon RDS alocará espaço no armazenamento de instância para o espaço de tabela temporário.

Você pode definir os parâmetros db_flash_cache_size e rds.instance_store_temp_size para instâncias de banco de dados que não usam um armazenamento de instância. Nesse caso, as duas configurações são avaliadas como 0, o que desativa o recurso. Nesse caso, você pode usar o mesmo grupo de parâmetros para diferentes tamanhos de instância e para instâncias que não usam um armazenamento de instância. Se você modificar esses parâmetros, reinicialize as instâncias associadas para que as alterações tenham efeito.

Importante

Se você alocar espaço para um espaço de tabela temporário, o Amazon RDS não criará o espaço de tabela temporário automaticamente. Para saber como criar o espaço de tabela temporário no armazenamento de instância, consulte Criar um espaço de tabela temporário no armazenamento de instância.

O valor combinado dos parâmetros anteriores não deve exceder 10/10 ou 100%. A tabela a seguir ilustra as configurações de parâmetros válidas e inválidas.

configuração db_flash_cache_size configuração rds.instance_store_temp_size Explicação

db_flash_cache_size={DBInstanceStore*0/10}

rds.instance_store_temp_size={DBInstanceStore*10/10}

Essa é uma configuração válida para todas as edições do Oracle Database. O Amazon RDS aloca 100% do espaço de armazenamento de instância ao espaço de tabela temporário. Esse é o padrão.

db_flash_cache_size={DBInstanceStore*10/10}

rds.instance_store_temp_size={DBInstanceStore*0/10}

Essa é uma configuração válida apenas para o Oracle Database Enterprise Edition. O Amazon RDS aloca 100% do espaço de armazenamento de instância ao cache flash.

db_flash_cache_size={DBInstanceStore*2/10}

rds.instance_store_temp_size={DBInstanceStore*8/10}

Essa é uma configuração válida apenas para o Oracle Database Enterprise Edition. O Amazon RDS aloca 20% do espaço de armazenamento de instância para o cache flash e 80% do espaço de armazenamento da instância para o espaço de tabela temporário.

db_flash_cache_size={DBInstanceStore*6/10}

rds.instance_store_temp_size={DBInstanceStore*4/10}

Essa é uma configuração válida apenas para o Oracle Database Enterprise Edition. O Amazon RDS aloca 60% do espaço de armazenamento de instância para o cache flash e 40% do espaço de armazenamento da instância para o espaço de tabela temporário.

db_flash_cache_size={DBInstanceStore*2/10}

rds.instance_store_temp_size={DBInstanceStore*4/10}

Essa é uma configuração válida apenas para o Oracle Database Enterprise Edition. O Amazon RDS aloca 20% do espaço de armazenamento de instância para o cache flash e 40% do espaço de armazenamento da instância para o espaço de tabela temporário.

db_flash_cache_size={DBInstanceStore*8/10}

rds.instance_store_temp_size={DBInstanceStore*8/10}

Essa é uma configuração inválida porque a porcentagem combinada do espaço de armazenamento da instância excede 100%. Nesses casos, o Amazon RDS falha na tentativa.

Considerações ao alterar o tipo de instância de banco de dados

Se você alterar o tipo de instância de banco de dados, isso poderá afetar a configuração do cache flash ou do espaço de tabela temporário no armazenamento de instância. Considere as seguintes modificações e seus efeitos:

Aumente ou reduza a escala verticalmente da instância de banco de dados que é compatível com o armazenamento de instância.

Os valores a seguir aumentam ou diminuem proporcionalmente ao novo tamanho do armazenamento de instância:

  • O novo tamanho do cache flash.

  • O espaço alocado para os espaços de tabela temporários que residem no armazenamento de instância.

Por exemplo, a configuração db_flash_cache_size={DBInstanceStore*6/10} em uma instância db.m5d.4xlarge fornece cerca de 340 GB de espaço em cache flash. Se você aumentar a escala verticalmente do tipo de instância para db.m5d.8xlarge, o espaço do cache flash aumentará para cerca de 680 GB.

Modifique uma instância de banco de dados que não use um armazenamento de instância para uma instância que usa um armazenamento de instância.

Se db_flash_cache_size for definido como um valor maior que 0, o cache flash será configurado. Se rds.instance_store_temp_size for definido como um valor maior que 0, o espaço de armazenamento da instância será alocado para uso por um espaço de tabela temporário. O RDS for Oracle não move arquivos temporários para o armazenamento de instância automaticamente. Para obter informações sobre como usar o espaço alocado, consulte Criar um espaço de tabela temporário no armazenamento de instância ou Adicionar um arquivo temporário ao armazenamento de instância em uma réplica de leitura.

Modifique uma instância de banco de dados que não use um armazenamento de instância para uma instância que usa um armazenamento de instância.

Nesse caso, o RDS for Oracle remove o cache flash. O RDS recria o arquivo temporário atualmente localizado no armazenamento de instância em um volume do Amazon EBS. O tamanho máximo do novo arquivo temporário é o tamanho anterior do parâmetro rds.instance_store_temp_size.

Trabalhar com um armazenamento de instância em uma réplica de leitura da Oracle

As réplicas de leitura são compatíveis com o cache flash e aos espaços de tabela temporários em um armazenamento de instância. Embora o cache flash funcione da mesma forma que na instância de banco de dados primária, observe as seguintes diferenças para espaços de tabela temporários:

  • Não é possível criar um espaço de tabela temporário em uma réplica de leitura. Se você criar um espaço de tabela temporário na instância primária, o RDS for Oracle replicará as informações do espaço de tabela sem arquivos temporários. Para adicionar um novo arquivo temporário, use uma das seguintes técnicas:

    • Use o procedimento do Amazon RDS rdsadmin.rdsadmin_util.add_inst_store_tempfile. O RDS for Oracle cria um arquivo temporário no armazenamento de instância em sua réplica de leitura e o adiciona ao espaço de tabela temporário especificado.

    • Execute o comando ALTER TABLESPACE … ADD TEMPFILE. O RDS for Oracle coloca o arquivo temporário no armazenamento do Amazon EBS.

    nota

    Os tamanhos dos arquivos temporários e os tipos de armazenamento podem ser diferentes na instância de banco de dados primária e na réplica de leitura.

  • Você pode gerenciar a configuração de espaço de tabela temporário padrão somente na instância de banco de dados primária. O RDS for Oracle replica a configuração para todas as réplicas de leitura.

  • Você pode configurar os grupos de espaços de tabela temporários somente na instância de banco de dados primária. O RDS for Oracle replica a configuração para todas as réplicas de leitura.

Configurar um grupo de espaços de tabela temporários em um armazenamento de instância e no Amazon EBS

Você pode configurar um grupo de espaços de tabela temporários para incluir espaços de tabela temporários em um armazenamento de instância e no Amazon EBS. Essa técnica é útil quando você deseja mais armazenamento temporário do que o permitido pela configuração máxima de rds.instance_store_temp_size.

Quando você configura um grupo de espaços de tabela temporários em um armazenamento de instância e no Amazon EBS, os dois espaços de tabela têm características de performance significativamente diferentes. O Oracle Database escolhe o espaço de tabela para atender às consultas com base em um algoritmo interno. Portanto, consultas semelhantes podem variar em performance.

Normalmente, você cria um espaço de tabela temporário no armazenamento de instância da seguinte forma:

  1. Crie um espaço de tabela temporário no armazenamento de instância.

  2. Defina o novo espaço de tabela como o espaço de tabela temporário padrão do banco de dados.

Se o tamanho do espaço de tabela no armazenamento de instância for insuficiente, você poderá criar armazenamento temporário adicional da seguinte forma:

  1. Atribua o espaço de tabela temporário no armazenamento de instância a um grupo de espaços de tabela temporários.

  2. Crie um espaço de tabela temporário no Amazon EBS, caso não exista.

  3. Atribua o espaço de tabela temporário no Amazon EBS ao mesmo grupo de espaços de tabela que inclui o espaço de tabela do armazenamento de instância.

  4. Defina o grupo de espaços de tabela como o espaço de tabela temporário padrão.

O exemplo a seguir pressupõe que o tamanho do espaço de tabela temporário no armazenamento de instância não atenda aos requisitos de sua aplicação. O exemplo cria o espaço de tabela temporário temp_in_inst_store no armazenamento de instância, o atribui ao grupo de espaços de tabela temp_group, adiciona o espaço de tabela existente do Amazon EBS chamado temp_in_ebs a esse grupo e define esse grupo como o espaço de tabela temporário padrão.

SQL> EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace('temp_in_inst_store'); PL/SQL procedure successfully completed. SQL> ALTER TABLESPACE temp_in_inst_store TABLESPACE GROUP temp_group; Tablespace altered. SQL> ALTER TABLESPACE temp_in_ebs TABLESPACE GROUP temp_group; Tablespace altered. SQL> EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace('temp_group'); PL/SQL procedure successfully completed. SQL> SELECT * FROM DBA_TABLESPACE_GROUPS; GROUP_NAME TABLESPACE_NAME ------------------------------ ------------------------------ TEMP_GROUP TEMP_IN_EBS TEMP_GROUP TEMP_IN_INST_STORE SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'; PROPERTY_VALUE -------------- TEMP_GROUP

Remover um armazenamento de instância do RDS for Oracle

Para remover o armazenamento de instância, modifique sua instância de banco de dados do RDS for Oracle para usar um tipo de instância que não seja compatível com o armazenamento de instância, como db.m5 ou db.r5.