Usar Cache de Tabela Externa para Melhorar o Desempenho de Tabelas Externas
O Cache de Tabela Externa no Oracle Autonomous Database permite armazenar em cache dados acessados com frequência de tabelas externas no seu banco de dados.
Só há suporte para o Cache de Tabela Externa no Oracle Database 23ai.
- Sobre o Cache de Tabela Externa no Autonomous Database
Um cache de tabela externa é uma área de armazenamento no seu Autonomous Database que armazena os dados de uma tabela externa. - Pré-requisitos para Criar Cache de Tabela Externa
Lista os pré-requisitos para criar o cache de tabela externa. - Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Usando o cache de tabela externa, você pode armazenar em cache os dados de tabelas externas no seu banco de dados. - Definir Preferências de Dimensionamento Opcionais para Cache de Tabela Externa
Você pode usar o procedimentoDBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
para definir preferências de dimensionamento e limites de cota de espaço no cache de tabela externa. - Observações do Cache de Tabela Externa
Lista observações e restrições importantes sobre o uso do cache de tabela externa em um Autonomous Database.
Tópico principal: Recursos
Sobre o Cache de Tabela Externa no Autonomous Database
Um cache de tabela externa é uma área de armazenamento no seu Autonomous Database que armazena os dados de uma tabela externa.
Os dados externos não são gerenciados pelo banco de dados; no entanto, você pode usar as tabelas externas para consultar dados fora do banco de dados. As consultas em tabelas externas não serão tão rápidas quanto as consultas em tabelas de banco de dados porque toda vez que você acessar os dados, eles precisarão ser extraídos dos arquivos externos armazenados no Object Store.
O recurso de cache de tabela externa permite armazenar em cache dados acessados com frequência de tabelas externas dentro do seu Autonomous Database, sem exigir modificações em seus aplicativos que acessam os dados, fornecendo assim acesso mais rápido a tabelas externas.
-
Desempenho Aprimorado: As consultas são várias vezes mais rápidas para seus dados externos acessados com frequência, ideais para painéis, relatórios e ferramentas de análise que acessam os mesmos dados regularmente.
-
100% Transparente: O mecanismo de armazenamento em cache é totalmente transparente; os aplicativos podem se beneficiar de uma velocidade aprimorada sem exigir alterações em suas consultas, painéis ou aplicativos.
-
Custos de Nuvem Menores: Em uma aplicação multicloud, o armazenamento em cache reduz a necessidade de repetidas recuperações de dados externos do armazenamento remoto, reduzindo assim as taxas de saída de dados associadas ao acesso a dados em regiões ou nuvens.
-
Parquet
-
ORC
-
AVRO
-
Tabelas de Iceberg
Consulte Consultar Dados Externos para obter mais informações.
Pré-requisitos para Criar Cache de Tabela Externa
Lista os pré-requisitos para criar o cache de tabela externa.
-
Você deve ter o privilégio
EXECUTE
no pacoteDBMS_EXT_TABLE_CACHE
. Observe que você só pode criar um cache de tabela externa em seu próprio esquema e para as tabelas externas que você possui. -
Você deve ter uma cota de espaço apropriada alocada para o seu esquema para garantir que haja capacidade de armazenamento suficiente para os dados do cache.
-
Você deve ter credenciais para acessar arquivos de tabela externa armazenados no Object Store. Não será necessário criar credenciais se você ativar credenciais do controlador de recursos para acessar o Oracle Cloud Infrastructure Object Store.
Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Usando o cache de tabela externa, você pode armazenar em cache os dados de tabelas externas dentro do banco de dados.
O cache de tabela externa é criado como um objeto de esquema no seu banco de dados, que recebe espaço físico semelhante ao armazenamento de tabelas e índices em arquivos de dados. Quando você cria um cache de tabela externa, uma nova tabela é criada no seu esquema, e quaisquer limites de cota de espaço definidos para o seu esquema também se aplicam ao cache de tabela externa.
- Criar Cache de Tabela Externa
ExecuteDBMS_EXT_TABLE_CACHE.CREATE_CACHE
para criar um cache de tabela externa. - Preencher Arquivos no Cache de Tabela Externa
Mostra exemplos para preencher arquivos no cache de tabela externa. - Eliminar Arquivos do Cache de Tabela Externa
Mostra exemplos para eliminar arquivos do cache de tabela externa. - Desativar e Ativar Cache de Tabela Externa
Mostra exemplos para desativar e ativar o cache de tabela externa. - Eliminar Cache de Tabela Externa
Mostra um exemplo para eliminar o cache de tabela externa. - Exibir Informações do Cache de Tabela Externa
O Autonomous Database fornece views que permitem monitorar o cache de tabela externa.
Criar Cache de Tabela Externa
Execute DBMS_EXT_TABLE_CACHE.CREATE_CACHE
para criar um cache de tabela externa.
Quando o cache é criado, ele é inicialmente vazio e ativado para preenchimento. O tamanho do cache aumenta a cada vez que um arquivo é adicionado, dependendo dos limites de cota de espaço definidos para o esquema, até atingir os limites atribuídos. Consulte Definir Preferências de Dimensionamento Opcionais para Cache de Tabela Externa para obter mais informações.
Tópico principal: Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Preencher Arquivos no Cache de Tabela Externa
Mostra exemplos para preencher arquivos no cache de tabela externa.
Depois de criar um cache, você pode preencher arquivos no cache. O preenchimento de arquivos carrega o conteúdo dos arquivos de tabela externa especificados no cache. Você pode optar por preencher todos os arquivos de uma tabela, uma porcentagem específica da tabela ou especificar uma condição de filtro para limitar os arquivos que deseja preencher. Por exemplo, você pode filtrar os arquivos com base em seus nomes ou em um intervalo de datas.
-
Dependendo da cota de espaço alocada para o esquema, o sistema Oracle tenta preencher arquivos no cache. Se o limite de cota atribuído for atingido, o sistema Oracle interromperá o preenchimento de arquivos, a menos que o espaço necessário seja alocado.
-
O cache da tabela externa não é atualizado automaticamente. Para atualizar o cache quando um arquivo no Object Store for modificado, preencha o arquivo novamente.
-
Quando um arquivo é excluído do Armazenamento de Objetos, os dados armazenados em cache correspondentes se tornam inválidos imediatamente e não podem ser recuperados.
Adicionar Tabela ao Cache de Tabela Externa
Use DBMS_EXT_TABLE_CACHE.ADD_TABLE
para preencher uma tabela inteira ou uma determinada porcentagem da tabela externa no cache.
Exemplos
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE
(
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/
Este exemplo tenta preencher a tabela STORE_SALES
no cache, ignorando todos os arquivos existentes que já foram preenchidos.
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_TABLE
(
owner => 'SALES',
table_name => 'STORE_SALES',
percent_files => 80);
END;
/
Este exemplo tenta preencher 80% da tabela STORE_SALES
no cache, ignorando todos os arquivos existentes que já foram preenchidos.
O parâmetro percent_files
é opcional; se você não especificar esse parâmetro, toda a tabela será preenchida no cache.
Consulte ADD_TABLE Procedures para obter mais informações.
Adicionar Arquivos ao Cache de Tabela Externa
-
ADD_FILE
: para adicionar um único arquivo ao cache. -
ADD_BY_LIKE
: para adicionar um ou mais arquivos especificados com base nos filtros de caminho especificados. -
ADD_LATEST_FILES
: para adicionar um ou mais arquivos com base no intervalo de tempo especificado.
Exemplos
DBMS_EXT_TABLE_CACHE.ADD_FILE
para preencher um único arquivo no cache de tabela externa. Por exemplo:BEGIN
DBMS_EXT_TABLE_CACHE.ADD_FILE
(
owner => 'SALES',
table_name => 'STORE_SALES',
file_url => 'https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet'
);
END;
/
Este exemplo preenche os dados do arquivo salesdata.parquet
no cache.
Este exemplo ignora o preenchimento do arquivo no cache se o arquivo especificado existir no cache e não tiver sido modificado desde que o arquivo foi armazenado no cache pela última vez.
Consulte ADD_FILE Procedures para obter mais informações.
DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE
para preencher um ou mais arquivos no cache de tabela externa. Por exemplo:BEGIN
DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE
(
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata1.parquet"]'
);
END;
/
Este exemplo preenche dados dos arquivos salesdata.parquet
e salesdata1.parquet
no cache, ignorando todos os arquivos existentes que já foram preenchidos.
BEGIN
DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE
(
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data2.parquet"]',
esc_char => '#',
force => TRUE);
END;
/
Este exemplo preenche os arquivos sales_data1.parquet
e sales_data2.parquet
no cache.
Neste exemplo, o caractere '#
' é definido como o caractere de escape. O caractere '_
' após '#
' é tratado como um sublinhado literal, não como um caractere curinga correspondente a qualquer caractere único.
Consulte ADD_BY_LIKE Procedures para obter mais informações.
DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES
para preencher um ou mais arquivos com base na data da última modificação no cache da tabela externa. Por exemplo:BEGIN
DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES
(
owner => 'SALES',
table_name => 'STORE_SALES',
since => INTERVAL '7' DAY,
max_files => 5,
force => TRUE);
END;
/
O parâmetro since
especifica o intervalo de tempo; somente arquivos modificados nos últimos sete (7) dias são elegíveis para serem preenchidos no cache.
O parâmetro max_files
limita o número de arquivos que podem ser preenchidos no cache. Este exemplo preenche apenas 5 (cinco) arquivos.
O parâmetro force
força os arquivos especificados a serem substituídos no cache, mesmo que os arquivos não tenham sido modificados.
Consulte ADD_LATEST_FILES Procedures para obter mais informações.
Tópico principal: Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Eliminar Arquivos do Cache de Tabela Externa
Mostra exemplos para eliminar arquivos do cache de tabela externa.
Limpar Cache de Tabela Externa
Use DBMS_EXT_TABLE_CACHE.CLEAR
para eliminar todos os arquivos do cache de tabela externa. Por exemplo:
BEGIN
DBMS_EXT_TABLE_CACHE.CLEAR
(
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/
Este exemplo elimina todos os arquivos do cache STORE_SALES
e desaloca todo o espaço usado pelos arquivos removidos.
Consulte Procedimento CLEAR para obter mais informações.
Eliminar Arquivos do Cache de Tabela Externa
-
DROP_FILE
: para eliminar um único arquivo do cache. -
DROP_BY_LIKE
: para eliminar um ou mais arquivos do cache com base nos filtros de caminho especificados. -
RETIRE_FILES
: para eliminar um ou mais arquivos do cache com base no intervalo especificado.
Exemplos
Use DBMS_EXT_TABLE_CACHE.DROP_FILE
para eliminar um arquivo do cache de tabela externa. Por exemplo:
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_FILE
(
owner => 'SALES',
table_name => 'STORE_SALES',
file_url => 'https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet'
);
END;
/
Este exemplo elimina o arquivo salesdata.parquet
do cache e desaloca todo o espaço usado pelo arquivo removido.
Consulte DROP_FILE Procedures para obter mais informações.
Use DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE
para eliminar um ou mais arquivos com base no parâmetro path_filters
. Por exemplo:
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE
(
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/salesdata1.parquet"]'
);
END;
/
Este exemplo elimina os arquivos salesdata.parquet
e salesdata1.parquet
do cache e desaloca todo o espaço usado pelos arquivos removidos.
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE
(
owner => 'SALES',
table_name => 'STORE_SALES',
path_filters => '["https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet",
"https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/sales#_data1.parquet"]'
);
END;
/
Este exemplo elimina os arquivos sales#_data1
e sales#_data2
do cache e desaloca todo o espaço usado pelos arquivos removidos.
Neste exemplo, o caractere '#
' é definido como o caractere de escape. O caractere '_
' após '#
' é tratado como um sublinhado literal, não como um caractere curinga correspondente a qualquer caractere único.
Consulte DROP_BY_LIKE Procedures para obter mais informações.
Use DBMS_EXT_TABLE_CACHE.RETIRE_FILES
para eliminar um ou mais arquivos com base no intervalo especificado. Por exemplo:
BEGIN
DBMS_EXT_TABLE_CACHE.RETIRE_FILES
(
owner => 'SALES',
table_name => 'STORE_SALES',
before => INTERVAL '30' DAY);
END;
/
Este exemplo elimina arquivos com mais de trinta (30) dias do cache e desaloca todo o espaço usado pelos arquivos removidos.
Consulte RETIRE_FILES Procedures para obter mais informações.
Os exemplos acima removem um ou mais arquivos do cache enquanto mantêm o cache. Você pode carregar arquivos novamente no cache quando necessário. Consulte Preencher Arquivos no Cache de Tabela Externa para obter mais informações.
Tópico principal: Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Desativar e Ativar Cache de Tabela Externa
Mostra exemplos para desativar e ativar o cache de tabela externa.
Execute DBMS_EXT_TABLE_CACHE.DISABLE
para desativar o cache de tabela externa do banco de dados. A desativação de um cache não exclui dados do cache; em vez disso, o cache é marcado como DISABLED e o otimizador não pode usar o cache para regravações de consulta.
Exemplo
BEGIN
DBMS_EXT_TABLE_CACHE.DISABLE
(
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/
Este exemplo desativa o cache STORE_SALES
.
Consulte Procedimento DISABLE para obter mais informações.
Depois de desativar um cache de tabela externa, use DBMS_EXT_TABLE_CACHE.ENABLE
para ativar o cache.
BEGIN
DBMS_EXT_TABLE_CACHE.ENABLE
(
owner => 'SALES',
table_name => 'STORE_SALES'
);
END;
/
Este exemplo ativa o cache STORE_SALES
.
Consulte CAPACITAR Procedimento para obter mais informações.
Tópico principal: Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Eliminar Cache de Tabela Externa
Mostra um exemplo para eliminar o cache da tabela externa.
Execute DBMS_EXT_TABLE_CACHE.DROP_CACHE
para eliminar um cache de tabela externa. O procedimento DBMS_EXT_TABLE_CACHE.DROP_CACHE
remove o cache de tabela externa especificado do banco de dados e libera o espaço de armazenamento associado ao cache.
Exemplo:
BEGIN
DBMS_EXT_TABLE_CACHE.DROP_CACHE
(
owner => 'SALES',
table_name => 'STORE_SALES');
END;
/
Este exemplo elimina o cache STORE_SALES
do esquema SALES
.
A eliminação de um cache remove seus metadados do dicionário de dados e exclui todos os dados armazenados no cache.
Consulte DROP_CACHE Procedures para obter mais informações.
USER_EXTERNAL_TAB_CACHES
para verificar se o cache foi eliminado. Por exemplo:SELECT external_table_name, cached
FROM user_external_tab_caches;
Consulte DBA_EXTERNAL_TAB_CACHES e USER_EXTERNAL_TAB_CACHES Views para obter mais informações.
Tópico principal: Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Exibir Informações do Cache da Tabela Externa
O Autonomous Database fornece views que permitem monitorar o cache de tabela externa.
Exibir | Descrição |
---|---|
Views DBA_EXTERNAL_TAB_CACHES e USER_EXTERNAL_TAB_CACHES |
Fornece informações sobre todos os caches de tabelas externas no banco de dados ou sobre os caches de tabelas externas de um usuário. |
Fornece informações sobre os arquivos no Cloud Storage que são acessíveis ao usuário atual e pertencem a tabelas externas em cache. |
|
Fornece informações sobre os arquivos no armazenamento em nuvem que pertencem ao usuário atual e pertencem a tabelas externas em cache. Esta exibição não exibe a coluna |
Tópico principal: Criar e Gerenciar Cache de Tabela Externa no Autonomous Database
Definir Preferências de Dimensionamento Opcionais para Cache de Tabela Externa
Você pode usar o procedimento DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
para definir preferências de dimensionamento e limites de cota de espaço no cache da tabela externa.
Por padrão, o cache de tabela externa é desativado para um usuário. Para ativar e criar o cache de tabela externa, use o procedimento DBMS_EXT_TABLE_CACHE.CREATE_CACHE
. O cache é criado no seu esquema padrão e herda quaisquer limites de cota de espaço definidos para o seu esquema. No entanto, você também pode usar o procedimento DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
para definir cotas de espaço para o cache de tabela externa. Use os parâmetros PROPERTY_NAME
e PROPERTY_VALUE
do procedimento DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
para definir os limites de cota de espaço.
O parâmetro PROPERTY_NAME
aceita valores MAX_CACHE_SIZE
e MAX_CACHE_PERCENT
. A propriedade MAX_CACHE_SIZE
especifica o tamanho total do cache externo em bytes. A propriedade MAX_CACHE_PERCENT
especifica o tamanho total do cache externo como uma porcentagem da cota do usuário especificado.
-
Quando
MAX_CACHE_SIZE
,MAX_CACHE_PERCENT
e a cota de espaço são definidos,MAX_CACHE_PERCENT
tem precedência sobreMAX_CACHE_SIZE
. -
Quando apenas
MAX_CACHE_SIZE
é definido eMAX_CACHE_PERCENT
ou cota de espaço não é definida,MAX_CACHE_SIZE
tem precedência. -
Quando apenas a cota de espaço é definida e
MAX_CACHE_SIZE
eMAX_CACHE_PERCENT
não são definidos, a cota de tamanho do cache assume como padrão 10% da cota total do esquema. -
Quando
MAX_CACHE_SIZE
,MAX_CACHE_PERCENT
ou a cota de espaço não estiver definida, a cota de espaço no cache assumirá como padrãoUNLIMITED
.
Exemplos
BEGIN
DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
(
property_name => 'MAX_CACHE_PERCENT',
property_value => 50,
owner => 'SALES');
END;
/
Este exemplo define a preferência de armazenamento em cache como MAX_CACHE_PERCENT
para o esquema SALES
.
O property_value
é 50%, o que especifica que a cota de espaço no cache para o esquema SALES
é no máximo 50% da cota de espaço total definida para SALES
.
BEGIN
DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY
(
owner => 'SALES',
property_name => 'MAX_CACHE_SIZE',
property_value => 5368709120);
END;
/
Este exemplo define a preferência de armazenamento em cache como MAX_CACHE_SIZE
para o esquema SALES
.
O property_value
é 5368709120
, que especifica que o tamanho máximo do cache para o esquema SALES
é de até 5 GB.
Consulte SET_USER_PROPERTY Procedure e CREATE_CACHE Procedure para obter mais informações.
Use DBMS_EXT_TABLE_CACHE.GET_USER_PROPERTY
para recuperar as propriedades de tamanho do cache.
Exemplo:
SET SERVEROUTPUT ON
DECLARE
max_cache_sz NUMBER,
BEGIN
max_cache_sz := DBMS_EXT_TABLE_CACHE.GET_USER_PROPERTY
(
property_name => 'MAX_CACHE_SIZE',
owner => 'SALES');
END;
/
Consulte Função GET_USER_PROPERTY para obter mais informações.
Observações do Cache da Tabela Externa
Lista observações e restrições importantes sobre o uso do cache de tabela externa em um Autonomous Database.
-
Você só pode criar um cache de tabela externa em seu próprio esquema e para as tabelas externas que você possui.
-
Um cache de tabela externa só pode conter arquivos de uma única tabela externa.
-
Você não pode conceder privilégios em um cache de tabela externa e só pode acessar dados do cache de tabela externa que você possui.
-
Quando um arquivo é excluído do Armazenamento de Objetos, os dados correspondentes no cache são sinalizados como inválidos e não podem ser acessados.