Uso de Caché de Tablas Externas para Mejorar el Rendimiento de Tablas Externas

La caché de tablas externas en Oracle Autonomous AI Database permite almacenar en caché datos a los que se accede con frecuencia desde tablas externas de la base de datos.

Nota

La caché de tablas externas solo está soportada para Oracle AI Database 26ai.

Acerca de la caché de tablas externas en la base de datos de IA autónoma

Una caché de tabla externa es un área de almacenamiento de la base de datos de IA autónoma que almacena los datos de una tabla externa.

Los datos externos no los gestiona la base de datos; sin embargo, puede utilizar las tablas externas para consultar datos fuera de la base de datos. Las consultas en tablas externas no serán tan rápidas como las consultas en tablas de base de datos porque cada vez que acceda a los datos se deben recuperar de los archivos externos almacenados en el almacén de objetos.

La caché de tabla externa permite almacenar datos externos a los que se accede con frecuencia localmente en la base de datos de IA autónoma, lo que permite que las consultas posteriores recuperen datos directamente de la caché. Cuando los datos externos se almacenan en la base de datos, las consultas en tablas externas se ejecutan mucho más rápido que cuando se recuperan datos de tablas externas. Este mecanismo de almacenamiento en caché es totalmente transparente para las aplicaciones, sin necesidad de realizar cambios en las sentencias SQL ni en los flujos de trabajo existentes.

Puede crear la caché de tablas externas para tablas externas particionadas y no particionadas creadas en tablas Parquet, ORC, AVRO, CSV y Iceberg. Puede rellenar archivos nuevos o actualizados en la caché fácilmente, y la base de datos invalida automáticamente los datos de los archivos suprimidos o inaccesibles, lo que garantiza que las consultas siempre devuelvan los datos más actuales. Si se eliminan los archivos externos o se revocan las credenciales de la tabla, los datos en caché correspondientes se invalidan inmediatamente y se vuelven inaccesibles, lo que mantiene la integridad y la seguridad de los datos.

Las cachés de tablas externas de la base de datos se pueden gestionar automáticamente o mediante valores basados en políticas. Con la gestión de caché basada en políticas, puede definir políticas simples para rellenar, refrescar y retirar archivos de la caché, lo que le proporciona un control preciso sobre el contenido y el mantenimiento de la caché.

A continuación se muestran algunas de las ventajas de utilizar la caché de tabla externa:
  • Mejora del rendimiento de los análisis: las consultas son varias veces más rápidas para los datos externos a los que se accede con frecuencia, lo que resulta ideal para paneles de control, informes y herramientas analíticas que acceden a los mismos datos con regularidad.

  • 100% transparente: el mecanismo de almacenamiento en caché es totalmente transparente; las aplicaciones pueden beneficiarse de una velocidad mejorada sin necesidad de realizar cambios en sus consultas, paneles de control o aplicaciones.

  • Costos en la nube más bajos: en una aplicación multinube, el almacenamiento en caché reduce la necesidad de repetidas recuperaciones de datos externos del almacenamiento remoto, lo que reduce las tarifas de salida de datos asociadas al acceso a los datos entre regiones o nubes.

  • Control de almacenamiento en caché flexible y detallado: puede almacenar en caché todos los archivos, un porcentaje de archivos o solo los datos actualizados más recientemente. Puede controlar los datos almacenados en caché, el tamaño de la caché y los límites de almacenamiento para las cachés de tablas externas.

Consulte Consulta de datos externos para obtener más información.

Requisitos para Crear Caché de Tabla Externa

Muestra los requisitos para crear la caché de tabla externa.

  • Debe estar conectado como usuario ADMIN o tener el privilegio EXECUTE en los paquetes DBMS_EXT_TABLE_CACHE y DBMS_CACHE.

  • Solo puede crear una caché de tabla externa en su propio esquema y para las tablas externas que posee.

  • Debe tener asignada una cuota de espacio adecuada para el esquema a fin de garantizar que haya suficiente capacidad de almacenamiento para los datos de caché.

  • Debe tener credenciales para acceder a los archivos de tabla externa almacenados en el almacén de objetos. No necesita crear credenciales si activa las credenciales de entidad de recurso para acceder al almacén de objetos de Oracle Cloud Infrastructure.

Creación y gestión de caché de tablas externas en la base de datos de IA autónoma

Mediante la caché de tablas externas, puede almacenar en caché los datos de las tablas externas de la base de datos.

La caché de tabla externa se crea como un objeto de esquema en la base de datos, al que se asigna espacio físico similar al almacenamiento de tablas e índices en archivos de datos. Al crear una caché de tabla externa, se crea una nueva tabla en el esquema y los límites de cuota de espacio definidos para el esquema también se aplican a la caché de tabla externa.

La gestión de cachés de tablas externas puede ser Automática o Basada en políticas. Con la gestión automática de caché, la base de datos crea, rellena, refresca y borra cachés según patrones de consulta de tablas externas. Con la gestión basada en políticas, puede definir cómo se crean, rellenan, refrescan y retiran las cachés, lo que le proporciona un control preciso sobre el contenido y el ciclo de vida de la caché.

Temas

Utilizar el almacenamiento en caché basado en políticas para tablas externas

Describe cómo utilizar el almacenamiento en caché basado en políticas para tablas externas en Autonomous AI Database.

El almacenamiento en caché basado en políticas le proporciona un control explícito sobre cómo se almacenan en caché, refrescan y gestionan los datos externos en la base de datos. En este enfoque, se definen políticas de almacenamiento en caché y se gestiona todo el ciclo de vida de la caché mediante procedimientos PL/SQL disponibles en el paquete DBMS_EXT_TABLE_CACHE. Estos procedimientos permiten realizar explícitamente varias operaciones de ciclo de vida de caché, como crear y rellenar cachés, borrar archivos de la caché y activar o desactivar las cachés.

Este enfoque le proporciona un control detallado sobre el comportamiento de la caché. Puede especificar qué archivos de tabla externa o qué porcentaje de los datos de la tabla externa se deben almacenar en caché, lo que garantiza un uso óptimo del espacio de caché según los requisitos de carga de trabajo. Procedimientos como ADD_BY_LIKE y ADD_LATEST_FILES le permiten filtrar y rellenar archivos en la caché en función de varios parámetros, como patrones de nombre de archivo, tiempos de modificación o criterios de frescura de datos. Del mismo modo, puede utilizar procedimientos como CLEAR, RETIRE_FILES o DROP_BY_LIKE para eliminar archivos de la caché.

Dado que las cachés basadas en políticas no se gestionan mediante un algoritmo de expulsión automática, la base de datos no las elimina automáticamente bajo presión de espacio. Si el espacio en caché no está disponible, es posible que los nuevos archivos no se completen hasta que se libere espacio adicional. Este enfoque proporciona una mayor flexibilidad y es ideal para cargas de trabajo en las que necesita más control sobre el contenido de la caché.

En el siguiente diagrama de flujo se describen los pasos para gestionar cachés basadas en políticas mediante el paquete DBMS_EXT_TABLE_CACHE. Incluye pasos clave como la creación, el relleno y el borrado de la caché.


Descripción de adb_external_table_cache.png a continuación
Descripción de la ilustración adb_external_table_cache.png

Temas

Crear Caché de Tabla Externa

Ejecute DBMS_EXT_TABLE_CACHE.CREATE_CACHE para crear una caché de tabla externa.

Cuando se crea la caché, inicialmente está vacía y activada para relleno. El tamaño de la caché aumenta cada vez que se agrega un archivo, según los límites de cuota de espacio definidos para el esquema, hasta que alcanza los límites asignados. Consulte Set Optional Sizing Preferences for Policy-Based Caches para obtener más información.

  1. Utilice DBMS_EXT_TABLE_CACHE.CREATE_CACHE para crear la caché de tabla externa para el esquema. Por ejemplo:
    BEGIN
        DBMS_EXT_TABLE_CACHE.CREATE_CACHE (      
          owner          => 'SALES',
          table_name     => 'STORE_SALES',
          partition_type => 'PATH');                                                                 
    END;                                                                 
    /
    

    Esto crea una caché para la tabla STORE_SALES en el esquema SALES. STORE_SALES es una tabla externa que apunta a los datos almacenados en el almacén de objetos.

    El parámetro owner especifica el nombre del esquema. En este ejemplo se crea una caché de tabla externa para el usuario SALES.

    El parámetro partition_type especifica el método de partición que se va a utilizar para la caché de tabla externa. En este ejemplo, se particiona la caché mediante la columna FILE$PATH. FILE$PATH es una columna invisible que especifica el texto de la ruta de acceso del archivo hasta el principio del nombre del objeto.

    Puede obtener más información en los siguientes enlaces:

    CREATE_CACHE Procedimiento

    Columnas de metadatos de tabla externa

  2. Cuando se crea por primera vez una caché de tabla externa, sus metadatos se almacenan en el diccionario de datos, pero no se asigna espacio para los datos de caché. Puede consultar la vista USER_EXTERNAL_TAB_CACHES para verificar la creación de la caché.
    SELECT external_table_name, cached, disabled 
      FROM user_external_tab_caches;

    Consulte Vistas DBA_EXTERNAL_TAB_CACHES y USER_EXTERNAL_TAB_CACHES para obtener más información.

    Utilice el procedimiento DBMS_EXT_TABLE_CACHE.VALIDATE para validar una caché de tabla externa. Se informa de un error si no se encuentra la tabla externa a la que se hace referencia en la base de datos.

    Por ejemplo:
    BEGIN
      DBMS_EXT_TABLE_CACHE.VALIDATE (
        owner         => 'SALES', 
        table_name    => 'STORE_SALES',
        raise_errors  => TRUE);
    END;
    /

    Consulte Procedimiento VALIDATE para obtener más información.

Rellenar Archivos en Caché de Tabla Externa

Muestra ejemplos para rellenar archivos en la caché de tabla externa.

Después de crear una caché, puede rellenar los archivos en la caché. Al rellenar los archivos, se carga el contenido de los archivos de tabla externa especificados en la caché. Puede elegir rellenar todos los archivos de una tabla, un porcentaje específico de la tabla o especificar una condición de filtro para limitar los archivos que desea rellenar. Por ejemplo, puede filtrar los archivos según sus nombres o un rango de fechas.

Nota

  • Según la cuota de espacio asignada para el esquema, Oracle intenta rellenar los archivos en la caché. Si se alcanza el límite de cuota asignado, Oracle deja de rellenar los archivos a menos que se asigne el espacio necesario.

  • La caché de tabla externa no se refresca automáticamente. Para actualizar la caché cuando se modifica un archivo del almacén de objetos, debe volver a rellenar el archivo.

  • Cuando se suprime un archivo del almacén de objetos, los datos almacenados en caché correspondientes se convierten inmediatamente en no válidos y no se pueden recuperar.

Agregar tabla a caché de tabla externa

Utilice DBMS_EXT_TABLE_CACHE.ADD_TABLE para rellenar una tabla completa o un determinado porcentaje de la tabla externa en la caché.

Ejemplos

BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_TABLE (
    owner         => 'SALES', 
    table_name    => 'STORE_SALES');
END;
/

En este ejemplo, se intenta rellenar la tabla STORE_SALES en la caché, omitiendo cualquier archivo existente que ya se haya rellenado.

BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_TABLE (
    owner         => 'SALES', 
    table_name    => 'STORE_SALES',
    percent_files => 80);
END;
/

Este ejemplo intenta rellenar el 80% de la tabla STORE_SALES en la caché, omitiendo cualquier archivo existente que ya se haya rellenado.

El parámetro percent_files es opcional; si no especifica este parámetro, toda la tabla se rellena en la caché.

Consulte ADD_TABLE Procedure para obtener más información.

Agregar archivos a caché de tabla externa

Puede utilizar los siguientes procedimientos para agregar uno o más archivos a la caché de tabla externa:
  • ADD_FILE: para agregar un único archivo a la caché.

  • ADD_BY_LIKE: para agregar uno o más archivos especificados según los filtros de ruta de acceso especificados.

  • ADD_LATEST_FILES: para agregar uno o más archivos según el intervalo de tiempo especificado.

Ejemplos

Utilice el procedimiento DBMS_EXT_TABLE_CACHE.ADD_FILE para rellenar un único archivo en la caché de tabla externa. Por ejemplo:
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;
/

En este ejemplo, se rellenan los datos del archivo salesdata.parquet en la caché.

En este ejemplo, se omite rellenar el archivo en la caché si el archivo especificado existe en la caché y no se ha modificado desde la última vez que el archivo se almacenó en caché.

Consulte ADD_FILE Procedure para obtener más información.

Utilice el procedimiento DBMS_EXT_TABLE_CACHE.ADD_BY_LIKE para rellenar uno o más archivos en la caché de tabla externa. Por ejemplo:
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%.parquet",
                      "https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/your_namespace/your_bucket/customer%.parquet"]'
);
END;
/

En este ejemplo, se rellenan todos los archivos con nombres que comienzan por sales o customer, al tiempo que se excluyen los archivos que ya se han rellenado.

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;
/

En este ejemplo, se rellenan los archivos sales_data1.parquet y sales_data2.parquet en la caché.

En este ejemplo, el carácter '#' se define como el carácter de escape. El carácter '_' que sigue a '#' se trata como un guion bajo literal, no como un comodín que coincide con un solo carácter.

Consulte ADD_BY_LIKE Procedure para obtener más información.

Utilice el procedimiento DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES para rellenar uno o más archivos basados en la fecha de última modificación en la caché de tabla externa. Por ejemplo:
BEGIN
  DBMS_EXT_TABLE_CACHE.ADD_LATEST_FILES (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    since        => INTERVAL '7' DAY,
    max_files    => 5,
    force        => TRUE);
END;
/

El parámetro since especifica el intervalo de tiempo; solo los archivos modificados en los últimos siete (7) días son elegibles para rellenarse en la caché.

El parámetro max_files limita el número de archivos que se pueden rellenar en la caché. Este ejemplo rellena sólo cinco (5) archivos.

El parámetro force fuerza la sobrescritura de los archivos especificados en la caché aunque los archivos no se hayan modificado.

Consulte ADD_LATEST_FILES Procedure para obtener más información.

Consulte las siguientes vistas del diccionario de datos para mostrar los archivos almacenados en caché en la caché de tabla externa:
Borrar archivos de la caché de tabla externa

Muestra ejemplos para borrar archivos de la caché de tabla externa.

Puede eliminar todos los archivos de la caché o especificar condiciones de filtro para borrar uno o más archivos de la caché. Por ejemplo, puede filtrar los archivos por sus nombres o según un intervalo de tiempo específico.

Borrar caché de tabla externa

Utilice DBMS_EXT_TABLE_CACHE.CLEAR para borrar todos los archivos de la caché de tabla externa. Por ejemplo:

BEGIN
  DBMS_EXT_TABLE_CACHE.CLEAR (
    owner         => 'SALES', 
    table_name    => 'STORE_SALES');
END;
/

En este ejemplo, se borran todos los archivos de la caché STORE_SALES y se anula la asignación de todo el espacio utilizado por los archivos eliminados.

Consulte Procedimiento LIMPIEZA para obtener más información.

Borrar archivos de la caché de tabla externa

Puede utilizar los siguientes procedimientos para borrar uno o más archivos de la caché de tabla externa:
  • DROP_FILE: para borrar un único archivo de la caché.

  • DROP_BY_LIKE: para borrar uno o más archivos de la caché según los filtros de ruta de acceso especificados.

  • RETIRE_FILES: para borrar uno o más archivos de la caché según el intervalo especificado.

Ejemplos

Utilice DBMS_EXT_TABLE_CACHE.DROP_FILE para borrar un archivo de la caché de tabla externa. Por ejemplo:

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;
/

En este ejemplo, se borra el archivo salesdata.parquet de la caché y se anula la asignación de todo el espacio utilizado por el archivo eliminado.

Consulte DROP_FILE Procedure para obtener más información.

Utilice DBMS_EXT_TABLE_CACHE.DROP_BY_LIKE para borrar uno o más archivos basados en el parámetro path_filters. Por ejemplo:

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;
/

En este ejemplo, se borran los archivos salesdata.parquet y salesdata1.parquet de la caché y se anula la asignación de todo el espacio utilizado por los archivos eliminados.

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#_data2.parquet"]'
);
END;
/

En este ejemplo, se borran los archivos sales#_data1 y sales#_data2 de la caché y se anula la asignación de todo el espacio utilizado por los archivos eliminados.

En este ejemplo, el carácter '#' se define como el carácter de escape. El carácter '_' que sigue a '#' se trata como un guion bajo literal, no como un comodín que coincide con un solo carácter.

Consulte DROP_BY_LIKE Procedure para obtener más información.

Utilice DBMS_EXT_TABLE_CACHE.RETIRE_FILES para borrar uno o más archivos según el intervalo especificado. Por ejemplo:

BEGIN
 DBMS_EXT_TABLE_CACHE.RETIRE_FILES (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES',
    before       => INTERVAL '30' DAY);
END;
/

En este ejemplo, se borran los archivos que tienen más de treinta (30) días de la caché y se anula la asignación de todo el espacio utilizado por los archivos eliminados.

Consulte RETIRE_FILES Procedure para obtener más información.

Los ejemplos anteriores eliminan uno o más archivos de la caché mientras conservan la caché. Puede volver a cargar los archivos en la caché cuando sea necesario. Consulte Relleno de Archivos en Caché de Tabla Externa para obtener más información.

Desactivar y activar caché de tabla externa

Muestra ejemplos para desactivar y activar la caché de tabla externa.

Ejecute DBMS_EXT_TABLE_CACHE.DISABLE para desactivar la caché de tabla externa de la base de datos. La desactivación de una caché no suprime los datos de la caché; en su lugar, la caché se marca como DISABLED y el optimizador no puede utilizar la caché para reescrituras de consulta.

Ejemplo

BEGIN
    DBMS_EXT_TABLE_CACHE.DISABLE (      
      owner          => 'SALES',
      table_name     => 'STORE_SALES');                                                                 
END;                                                                 
/

En este ejemplo, se desactiva la caché STORE_SALES.

Consulte DISABLE Procedure para obtener más información.

Después de desactivar una caché de tabla externa, utilice DBMS_EXT_TABLE_CACHE.ENABLE para activar la caché.

Ejemplo:
BEGIN
  DBMS_EXT_TABLE_CACHE.ENABLE (
    owner        => 'SALES', 
    table_name   => 'STORE_SALES'
 );
END;
/

Este ejemplo activa la caché STORE_SALES.

Consulte ENABLE Procedure para obtener más información.

Borrar caché de tabla externa

Muestra un ejemplo para borrar la caché de tabla externa.

Ejecute DBMS_EXT_TABLE_CACHE.DROP_CACHE para borrar una caché de tabla externa. El procedimiento DBMS_EXT_TABLE_CACHE.DROP_CACHE elimina la caché de tabla externa especificada de la base de datos y libera el espacio de almacenamiento asociado a la caché.

Ejemplo:

BEGIN
    DBMS_EXT_TABLE_CACHE.DROP_CACHE (      
      owner          => 'SALES',
      table_name     => 'STORE_SALES');                                                             
END;                                                                 
/

En este ejemplo se borra la caché STORE_SALES del esquema SALES.

Al borrar una caché, se eliminan los metadatos del diccionario de datos y se suprimen todos los datos almacenados en caché.

Consulte DROP_CACHE Procedure para obtener más información.

Consulte la vista USER_EXTERNAL_TAB_CACHES para verificar que la caché se ha borrado. Por ejemplo:
SELECT external_table_name, cached
  FROM user_external_tab_caches;

Consulte Vistas DBA_EXTERNAL_TAB_CACHES y USER_EXTERNAL_TAB_CACHES para obtener más información.

Definir preferencias de tamaño opcionales para cachés basadas en políticas

Describe cómo definir las preferencias de tamaño para las cachés de tablas externas basadas en políticas en Autonomous AI Database.

Por defecto, la caché de tabla externa está desactivada para un usuario. Para activar y crear la caché de tabla externa, utilice el procedimiento DBMS_EXT_TABLE_CACHE.CREATE_CACHE. La caché se crea en el esquema por defecto y hereda los límites de cuota de espacio definidos para el esquema. Sin embargo, también puede utilizar el procedimiento DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY para definir cuotas de espacio para la caché de tabla externa. Utilice los parámetros PROPERTY_NAME y PROPERTY_VALUE del procedimiento DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY para definir los límites de cuota de espacio.

El parámetro PROPERTY_NAME acepta los valores MAX_CACHE_SIZE y MAX_CACHE_PERCENT. La propiedad MAX_CACHE_SIZE especifica el tamaño total de la caché externa en bytes. La propiedad MAX_CACHE_PERCENT especifica el tamaño total de la caché externa como porcentaje de la cuota del usuario especificado.

Ejemplos

BEGIN
    DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY (
    property_name  => 'MAX_CACHE_PERCENT',          
    property_value => 50,                   
    owner          => 'SALES');                                                                
END;                                                                 
/

En este ejemplo se define la preferencia de almacenamiento en caché en MAX_CACHE_PERCENT para el esquema SALES.

property_value es el 50%, que especifica que la cuota de espacio de caché para el esquema SALES es un máximo del 50% de la cuota de espacio total definida para SALES.

BEGIN
    DBMS_EXT_TABLE_CACHE.SET_USER_PROPERTY (
    owner          => 'SALES',   
    property_name  => 'MAX_CACHE_SIZE',          
    property_value => 5368709120);                                                                
END;                                                                 
/

En este ejemplo se define la preferencia de almacenamiento en caché en MAX_CACHE_SIZE para el esquema SALES.

property_value es 5368709120, que especifica que el tamaño máximo de caché para el esquema SALES es de hasta 5 GB.

Consulte Procedimiento SET_USER_PROPERTY y Procedimiento CREATE_CACHE para obtener más información.

Utilice DBMS_EXT_TABLE_CACHE.GET_USER_PROPERTY para recuperar las propiedades de tamaño de caché.

Ejemplo:

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 GET_USER_PROPERTY Function para obtener más información.

Tenga en cuenta el siguiente orden de prioridad para definir las propiedades de tamaño de caché:

  • Cuando se definen MAX_CACHE_SIZE, MAX_CACHE_PERCENT y la cuota de espacio, MAX_CACHE_PERCENT tiene prioridad sobre MAX_CACHE_SIZE.

  • Cuando solo se define MAX_CACHE_SIZE y no se define MAX_CACHE_PERCENT o cuota de espacio, MAX_CACHE_SIZE tiene prioridad.

  • Cuando solo se define la cuota de espacio y no se definen MAX_CACHE_SIZE ni MAX_CACHE_PERCENT, la cuota de tamaño de caché se define por defecto en el 10% de la cuota de esquema total.

  • Cuando no se define MAX_CACHE_SIZE, MAX_CACHE_PERCENT o la cuota de espacio, la cuota de espacio de caché se define por defecto en UNLIMITED.

Nota

Para supervisar el uso de espacio de caché, consulte la columna CACHE_CUR_SIZE en las vistas ALL_EXTERNAL_TAB_CACHES. Consulte Vistas DBA_EXTERNAL_TAB_CACHES y USER_EXTERNAL_TAB_CACHES para obtener más información.

Utilizar almacenamiento en caché automático para tabla externa

Describe cómo utilizar el almacenamiento en caché automático para tablas externas en Autonomous AI Database.

Al activar el almacenamiento en caché automático para la base de datos, la base de datos gestiona automáticamente todo el ciclo de vida de la caché, incluida la creación, el relleno, el refrescamiento y el borrado, sin necesidad de intervención. Oracle utiliza juegos de ajustes SQL (STS) para determinar qué tablas externas pueden beneficiarse del almacenamiento en caché, cuándo refrescar las cachés y cuándo borrarlas en función de los patrones de uso y el espacio de almacenamiento disponible. Este enfoque reduce la sobrecarga para la gestión de la caché, ya que el uso de la caché se supervisa continuamente, lo que garantiza que los datos de tablas externas a los que se accede con frecuencia permanezcan disponibles en la caché para mejorar los tiempos de respuesta de las consultas.

Por defecto, el almacenamiento en caché automático no está activado en la base de datos. Para activarla, debe definir el tamaño de caché en un valor distinto de cero mediante procedimientos como DBMS_CACHE.SET_USER_PROPERTY proporcionados en el paquete DBMS_CACHE. Puede configurar el almacenamiento en caché automático para un usuario específico o como valor por defecto para todos los usuarios de la base de datos, según sus requisitos.

Cuando se activa el almacenamiento en caché automático de tablas externas, Oracle crea cachés de tablas externas marcadas como AUTO y rellena todos los datos correspondientes de una tabla externa en su caché si la cuota lo permite. Las cachés AUTO se refrescan automáticamente según un programa normal. Sin embargo, también puede utilizar los procedimientos DBMS_CACHE.REFRESH o DBMS_CACHE.CLEAR para refrescar o borrar las cachés, respectivamente.

Oracle gestiona las cachés de AUTO mediante un algoritmo de expulsión similar al de menos utilizados recientemente (LRU). Cuando hay presión de espacio, las cachés a las que se ha accedido menos recientemente se borran automáticamente durante el ciclo de refrescamiento para liberar el espacio de almacenamiento.

Puede obtener más información en los siguientes enlaces:

Temas

Activar almacenamiento en caché automático para tablas externas

Muestra ejemplos de cómo activar el almacenamiento en caché automático para tablas externas en la base de datos.

Por defecto, el almacenamiento en caché automático está desactivado, puede activar el almacenamiento en caché automático para las tablas externas, ya sea globalmente para todos los usuarios de la base de datos o para un usuario específico. Después de activar el almacenamiento en caché automático, la base de datos crea automáticamente cachés de tablas externas basadas en las estadísticas de uso de consultas de tablas externas disponibles en los juegos de ajustes SQL (STS). Todas las cachés recién creadas se marcan como AUTO. Las cachés existentes siguen la configuración de gestión de caché basada en políticas.

Al activar el almacenamiento en caché automático, puede especificar opcionalmente el ámbito del refrescamiento de la caché, lo que significa que las cachés se pueden refrescar durante cada ciclo de refrescamiento y definir la ventana de tiempo permitida para completar el proceso de refrescamiento.

Utilice DBMS_CACHE.SET_GLOBAL_PROPERTY o DBMS_CACHE.SET_USER_PROPERTY para definir las propiedades de almacenamiento en caché de AUTO, incluidas las propiedades para activar el almacenamiento en caché automático global o para un usuario especificado, respectivamente. Las preferencias de almacenamiento en caché a nivel de usuario tienen prioridad sobre las preferencias de almacenamiento en caché global. Utilice los parámetros PROPERTY_NAME y PROPERTY_VALUE de estos procedimientos para definir los límites de cuota de espacio para las cachés de tablas externas.

En función de la cuota de espacio especificada, Oracle crea las cachés e intenta rellenar todos los datos de la tabla externa en la caché. El proceso de relleno falla si el tamaño de la caché no es suficiente para alojar todos los datos de la tabla externa.

  1. Utilice DBMS_CACHE.SET_GLOBAL_PROPERTY para activar el almacenamiento en caché automático para todos los usuarios de la base de datos.

    Ejemplos:

    Ejemplo para activar el almacenamiento en caché automático para todos los usuarios de la base de datos:

    BEGIN
     DBMS_CACHE.SET_GLOBAL_PROPERTY (
        property_name       => 'MAX_CACHE_PERCENT', 
        property_value_num  => 20);                                                                
    END;                                                                 
    /

    En este ejemplo, se define la preferencia de almacenamiento en caché en MAX_CACHE_PERCENT como el valor por defecto para todos los usuarios de la base de datos y se define la cuota de caché de tabla externa en un máximo de 20% de la cuota de usuario asignada total. Puede sustituir esta configuración por defecto para usuarios individuales mediante el procedimiento DBMS_CACHE.SET_USER_PROPERTY.

    Ejemplo para definir el modo de refrescamiento automático para todos los usuarios de la base de datos:
    BEGIN
     DBMS_CACHE.SET_GLOBAL_PROPERTY (
        property_name       => 'AUTO_REFRESH_MODE', 
        property_value_str  => 'NEW');                                                              
    END;                                                                 
    /

    Especifica el ámbito en el que se refrescan las cachés de AUTO durante cada ciclo de refrescamiento. El valor property_value_str se puede sustituir en el nivel de esquema mediante el procedimiento DBMS_CACHE.SET_USER_PROPERTY.

    Ejemplo para definir la ventana de tiempo máxima permitida para completar el refrescamiento:
    BEGIN
     DBMS_CACHE.SET_GLOBAL_PROPERTY (
        property_name       => 'MAX_REFRESH_WINDOW', 
        property_value_num  => 20);                                                              
    END;                                                                 
    /

    En este ejemplo, se define MAX_REFRESH_WINDOW en veinte (20) segundos.

    Consulte SET_GLOBAL_PROPERTY Procedure para obtener más información.

    Nota

    La propiedad MAX_REFRESH_WINDOW solo se puede definir en el nivel de base de datos; esta propiedad no se puede definir en el nivel de esquema.

    Ejecute DBMS_CACHE.GET_GLOBAL_PROPERTY para recuperar las preferencias de almacenamiento en caché automático por defecto para las tablas externas. Por ejemplo:

    SET SERVEROUTPUT ON;
    DECLARE
       cache_property NUMBER;
    BEGIN
       DBMS_CACHE.GET_GLOBAL_PROPERTY (
          property_name  => 'MAX_CACHE_SIZE',
          property_value => cache_property
       );
     DBMS_OUTPUT.PUT_LINE('MAX_CACHE_SIZE = ' || cache_property);
    END;
    /

    Consulte GET_GLOBAL_PROPERTY Procedure para obtener más información.

  2. Utilice DBMS_CACHE.SET_USER_PROPERTY para activar el almacenamiento en caché automático de la tabla externa para un usuario específico. Por ejemplo:
    BEGIN
     DBMS_CACHE.SET_USER_PROPERTY (
            property_name       => 'MAX_CACHE_PERCENT', 
            property_value_num  => 50,
            owner               => 'SALES');                                                                
    END;                                                                 
    /

    En este ejemplo se sustituyen las preferencias de almacenamiento en caché global por los valores especificados en DBMS_CACHE.SET_USER_PROPERTY.

    Consulte SET_USER_PROPERTY Procedure para obtener más información.

    Utilice DBMS_CACHE.GET_USER_PROPERTY para recuperar las preferencias de almacenamiento en caché automático para tablas externas para un usuario especificado. Por ejemplo:

    SET SERVEROUTPUT ON;
    DECLARE
       cache_property NUMBER;
    BEGIN
       DBMS_CACHE.GET_USER_PROPERTY (
          property_name  => 'MAX_CACHE_SIZE',
          owner          => 'SALES',
          property_value => cache_property
       );
     DBMS_OUTPUT.PUT_LINE('MAX_CACHE_SIZE = ' || cache_property);
    END;
    /

    Consulte GET_USER_PROPERTY Procedure para obtener más información.

Nota

Para supervisar el uso de espacio de caché, consulte la columna CACHE_CUR_SIZE en las vistas ALL_EXTERNAL_TAB_CACHES. Consulte Vistas DBA_EXTERNAL_TAB_CACHES y USER_EXTERNAL_TAB_CACHES para obtener más información.
Refrescamiento de Cachés de Tabla Externas

Muestra un ejemplo para refrescar las cachés de AUTO para un esquema especificado.

Las cachés AUTO se refrescan automáticamente según un programa normal. Según el tipo de refrescamiento especificado, la base de datos puede:
  • Agregue nuevas cachés.

  • Borrar las cachés no válidas (las cachés a las que no se puede acceder se marcan como no válidas y se borran en el siguiente ciclo de refrescamiento).

  • Actualizar o volver a rellenar las cachés existentes.

  • Borre las cachés a las que se ha accedido menos recientemente cuando hay presión de espacio.

También puede utilizar el procedimiento DBMS_CACHE.REFRESH para realizar un refrescamiento bajo demanda para todas las cachés de un usuario especificado.

  1. Utilice DBMS_CACHE.REFRESH para refrescar todas las cachés de tablas externas de un usuario especificado. Por ejemplo:
    BEGIN
        DBMS_CACHE.REFRESH (      
          owner          => 'SALES',
          refresh_type   => 'ALL');                                                                 
    END;                                                                 
    /

    En este ejemplo se actualizan las cachés existentes y se crean nuevas cachés de tablas externas para el esquema SALES, según sea necesario.

    La propiedad refresh_type especifica el ámbito en el que se realiza el refrescamiento. La propiedad puede tener uno de los siguientes valores:
    • ALL: todas las cachés AUTO existentes para el esquema SALES se refrescan y, si es necesario, se crean nuevas cachés.

    • CURRENT: solo se refrescan las cachés existentes, no se agregan nuevas cachés.

    • NEW: solo se crean nuevas cachés.

    Consulte Procedimiento REFRESH para obtener más información.

Borrado de Cachés de Tabla Externas

Muestra un ejemplo para borrar las cachés de AUTO para un esquema especificado.

Durante cada ciclo de refrescamiento, las cachés no válidas y las cachés a las que se ha accedido menos recientemente se borran de la base de datos. También puede utilizar el procedimiento DBMS_CACHE.CLEAR para borrar todas las cachés de un usuario especificado.

  1. Utilice DBMS_CACHE.CLEAR para borrar todas las cachés de tablas externas para un usuario especificado. Por ejemplo:
    BEGIN
     DBMS_CACHE.CLEAR (
        owner => 'SALES');                                                                
    END;                                                                 
    /

    En este ejemplo se borran todas las cachés de tablas externas para el esquema SALES.

    Consulte Procedimiento LIMPIEZA para obtener más información.

Ver información de caché de tabla externa

Autonomous AI Database proporciona vistas que le permiten supervisar la caché de tabla externa.

Ver Descripción

Vistas DBA_EXTERNAL_TAB_CACHES y USER_EXTERNAL_TAB_CACHES

Proporciona información sobre todas las cachés de tablas externas de la base de datos o sobre las cachés de tablas externas de un usuario.

ALL_EXTERNAL_TAB_CACHE_LOCATIONS

Proporciona información sobre los archivos de Cloud Storage a los que puede acceder el usuario actual y que pertenecen a tablas externas almacenadas en caché.

USER_EXTERNAL_TAB_CACHE_LOCATIONS

Proporciona información sobre los archivos del almacenamiento en la nube que son propiedad del usuario actual y que pertenecen a tablas externas almacenadas en caché. Esta vista no muestra la columna OWNER.

Notas de caché de tabla externa

Muestra notas importantes y restricciones sobre el uso de la caché de tablas externas en una base de datos de IA autónoma.

  • Solo puede crear una caché de tabla externa en su propio esquema y para las tablas externas que posee.

  • Una caché de tabla externa solo puede contener archivos de una única tabla externa.

  • No puede otorgar privilegios en una caché de tabla externa y solo puede acceder a los datos de la caché de tabla externa de la que es propietario.

  • Cuando se suprime un archivo del almacén de objetos, los datos correspondientes de la caché se marcan como no válidos y no se puede acceder a ellos.