Usar o Banco de Dados na Memória com o Autonomous Database
O recurso Database In-Memory disponível no Autonomous Database pode melhorar significativamente o desempenho para análises em tempo real e cargas de trabalho mistas.
- Sobre o Database In-Memory
O Oracle Database In-Memory (Database In-Memory) é um conjunto de recursos que melhora muito o desempenho para análises em tempo real e cargas de trabalho mistas. - Ativando Objetos para Preenchimento na Memória
Você pode ativar e desativar objetos para preenchimento no armazenamento de colunas na Memória. - Dimensionando o Armazenamento de Colunas na Memória
Quando sua instância do Autonomous Database tem 16 ou mais ECPUs, o recurso Database In-Memory é ativado por padrão e até 50% da SGA pode ser usada pelo In-Memory. - Desativando o Armazenamento de Colunas na Memória
Você pode desativar o armazenamento de colunas na Memória do seu Autonomous Database modificando o tamanho máximo da Memória para 0.
Tópico principal: Recursos
Sobre o Database In-Memory
O Oracle Database In-Memory (Database In-Memory) é um conjunto de recursos que melhora muito o desempenho para análises em tempo real e cargas de trabalho mistas.
-
Você ativou o recurso In-Memory para seu banco de dados on-premises e agora está migrando do banco de dados on-premises para o Autonomous Database.
-
As consultas em seu banco de dados passam a maior parte do tempo de execução verificando e filtrando dados, bem como executando junções e agregações group-by.
-
Você precisa melhorar o tempo de resposta de suas consultas que são de natureza analítica.
O armazenamento de colunas In-Memory é o principal recurso do Database In-Memory. O armazenamento de colunas In-Memory reside na Área In-Memory, que é uma parte opcional da SGA (System Global Area). Quando ativado para In-Memory, tabelas, partições, subpartições e views materializadas são preenchidas em um formato colunar no armazenamento de colunas In-Memory. Esse formato colunar é otimizado para varreduras muito rápidas, o que pode permitir que consultas analíticas executem ordens de magnitude mais rapidamente do que consultas baseadas em formato de linha. Consulte Oracle Database In-Memory para obter mais informações.
O armazenamento de colunas In-Memory aumenta dinamicamente com o tempo para acomodar os objetos INMEMORY
mais quentes. Você pode usar a cláusula de tabela PRIORITY
ou ter verificações contínuas de tabela para garantir que o armazenamento de colunas na Memória cresça o suficiente para sua carga de trabalho. Consulte Dimensionando o Armazenamento de Colunas na Memória para obter mais informações.
INMEMORY
em instruções DDL para ativar o In-Memory para os seguintes objetos:
-
Tabelas (incluindo tabelas externas)
-
Partições ou subpartições
-
Views materializadas
Consulte Ativando Objetos para Preenchimento na Memória para obter mais informações.
Observe o seguinte para ativar o Database In-Memory:
-
O Database In-Memory só está disponível para uma instância do Autonomous Database com:
-
O modelo de computação ECPU
-
Um mínimo de 16 ECPUs
-
-
Se você reiniciar o banco de dados, os objetos ativados para
INMEMORY
exigirão novo preenchimento no armazenamento de colunas na Memória. Dependendo da definição de prioridade, o novo preenchimento pode ocorrer automaticamente ou no primeiro acesso. Se você estiver monitorando o desempenho, notará um desempenho mais lento até que o objeto seja preenchido novamente.
Tópico principal: Usar o Banco de Dados na Memória com o Autonomous Database
Ativando Objetos para Preenchimento na Memória
Você pode ativar e desativar objetos para preenchimento no armazenamento de colunas na Memória.
Somente objetos com a cláusula INMEMORY
são elegíveis para preenchimento no armazenamento de colunas na Memória. Use as instruções DDL CREATE TABLE
ou ALTER TABLE
para aplicar a cláusula INMEMORY
.
Por padrão, os objetos são criados com o atributo NO INMEMORY
, o que significa que eles não são elegíveis para preenchimento no armazenamento de colunas na Memória.
A ativação de um objeto como INMEMORY
está especificando que um objeto pode residir no armazenamento de colunas In-Memory. O preenchimento na memória é uma etapa separada que ocorre quando o banco de dados lê os dados existentes no formato de linha, os transforma em formato colunar e, em seguida, os armazena no armazenamento de colunas na memória. Por padrão, todas as colunas em um objeto com o atributo INMEMORY
são preenchidas no armazenamento de colunas na Memória.
A definição do atributo INMEMORY
em um objeto implica que o objeto é um candidato para preenchimento no armazenamento de colunas na Memória. O objeto não é preenchido imediatamente para o armazenamento de colunas na memória. No entanto, você pode usar a cláusula PRIORITY
com o atributo INMEMORY
para controlar a prioridade do preenchimento no armazenamento de colunas na Memória. A cláusula PRIORITY
pode ser especificada com os seguintes valores:
-
CRITICAL
: O objeto é preenchido imediatamente após o banco de dados ser aberto. -
HIGH
: O objeto é preenchido após todos os objetosCRITICAL
terem sido preenchidos, se o espaço permanecer disponível no armazenamento de colunas In-Memory. -
MEDIUM
: O objeto é preenchido após todos os objetosCRITICAL
eHIGH
terem sido preenchidos, e o espaço permanece disponível no armazenamento de colunas In-Memory. -
LOW
: O objeto é preenchido após todos os objetosCRITICAL
,HIGH
eMEDIUM
terem sido preenchidos, se o espaço permanecer disponível no armazenamento de colunas na Memória. -
NONE
: Os objetos só são preenchidos após serem verificados pela primeira vez, se houver espaço disponível no armazenamento de colunas In-Memory. A prioridadeNONE
é a prioridade padrão.
Exemplo de criação de uma tabela com o atributo INMEMORY
:
CREATE TABLE im_emp (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY;
Este exemplo cria a tabela im_emp
com o atributo INMEMORY
. O exemplo usa a prioridade padrão de NONE
para a cláusula INMEMORY
, o que significa que a tabela só é preenchida depois de ser verificada pela primeira vez.
Exemplo de uso da cláusula PRIORITY
com o atributo INMEMORY
:
CREATE TABLE im_emp_1 (
id NUMBER, name VARCHAR2(20),
depno NUMBER, sal NUMBER,
mgr NUMBER,
loc VARCHAR2(20))
INMEMORY PRIORITY CRITICAL;
Exemplo para definir o atributo INMEMORY
para uma tabela existente:
ALTER TABLE employees INMEMORY;
Este exemplo define o atributo INMEMORY
para a tabela employees
.
Você também pode alterar uma tabela para definir o atributo INMEMORY
somente para um subconjunto de colunas na tabela. Por exemplo:
ALTER TABLE im_emp_tb INMEMORY NO INMEMORY(depno);
Este exemplo define o atributo INMEMORY
para o im_emp_tb
, mas exclui a coluna depno
.
Consulte INMEMORY_TABLE_CLAUSE para obter mais informações.
INMEMORY
for ativado para uma tabela, você poderá consultar a exibição V$IM_SEGMENTS
para determinar se os dados da tabela serão preenchidos no armazenamento de colunas na Memória. Por exemplo:SELECT SEGMENT_NAME, POPULATE_STATUS
FROM V$IM_SEGMENTS
WHERE SEGMENT_NAME = 'IM_EMP';
Consulte V$IM_SEGMENTS para obter mais informações.
NO INMEMORY
. Por exemplo:ALTER TABLE im_emp NO INMEMORY;
Para obter mais informações, consulte Como Funciona a População na Memória.
Observações para ativar objetos para preenchimento na Memória:
-
O banco de dados não preenche automaticamente objetos na Memória com a definição
PRIORITY
deNONE
. No entanto, você pode preencher manualmente esses objetos no armazenamento de colunas In-Memory. Consulte Preenchendo o Armazenamento de Colunas do IM Manualmente e Procedimento DBMS_INMEMORY.POPULATE para obter mais informações. -
Deve haver varreduras contínuas de tabela para garantir que o armazenamento de colunas na memória cresça automaticamente o suficiente para sua carga de trabalho. Se um objeto estiver parcialmente preenchido, a verificação de tabela poderá usar a Verificação Inteligente na Memória e no Exadata.
Tópico principal: Usar o Banco de Dados na Memória com o Autonomous Database
Dimensionando o Armazenamento de Colunas na Memória
Quando sua instância do Autonomous Database tem 16 ou mais ECPUs, o recurso Database In-Memory é ativado por padrão e até 50% da SGA pode ser usada pelo In-Memory.
A memória para a Área na Memória não é reservada antecipadamente, e o tamanho inicial da Área na Memória é 0. A Área In-Memory cresce gradualmente cada vez que há espaço insuficiente para a população In-Memory.
Os objetos no armazenamento de colunas In-Memory são gerenciados dinamicamente pelo AIM (Automatic In-Memory). Por padrão, o recurso Automatic In-Memory está ativado para o seu Autonomous Database.
O AIM usa estatísticas internas para determinar com que frequência objetos e colunas na memória são acessados. Se o armazenamento de colunas In-Memory estiver cheio e outros segmentos acessados com mais frequência se beneficiarem do preenchimento no armazenamento de colunas In-Memory, o armazenamento de colunas In-Memory removerá segmentos inativos.
Para garantir que o conjunto de dados de trabalho seja sempre preenchido, o AIM remove automaticamente segmentos frios (acessados com pouca frequência). Consulte Automatização do Gerenciamento de Objetos na Memória para obter mais informações.
-
Alterando a contagem de ECPUs do seu Autonomous Database.
-
Usando o procedimento
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE
para modificar o tamanho máximo da Memória. Você pode especificar um valor no intervalo entre 0 e 70. Especificar um valor zero (0) desativa o Database In-Memory. Por exemplo:
Este exemplo modifica o tamanho máximo da Memória para 60% do tamanho da SGA.BEGIN DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(60); END; /
Consulte SET_SGA_PERCENTAGE Procedures para obter mais informações.
Consulte a view V$INMEMORY_AREA
para recuperar as informações sobre alocação de espaço dentro da área In-Memory. Por exemplo:
SELECT * FROM V$INMEMORY_AREA;
Consulte V$INMEMORY_AREA para obter mais informações.
Tópico principal: Usar o Banco de Dados na Memória com o Autonomous Database
Desativando o Armazenamento de Colunas na Memória
Você pode desativar o armazenamento de colunas In-Memory do seu Autonomous Database modificando o tamanho máximo da In-Memory para 0.
Por exemplo:
BEGIN
DBMS_INMEMORY_ADMIN.SET_SGA_PERCENTAGE(0);
END;
/
Este exemplo modifica o valor máximo do tamanho In-Memory para zero (0) e desativa o Database In-Memory da instância.
Consulte SET_SGA_PERCENTAGE Procedures para obter mais informações.
Tópico principal: Usar o Banco de Dados na Memória com o Autonomous Database