Smart Scan es una función de Plataforma Exadata de Oracle que permite descargar ciertos tipos de operaciones del servidor de base de datos a los servidores de almacenamiento Exadata, lo que mejora drásticamente el rendimiento al reducir la cantidad de datos que deben transferirse entre el almacenamiento y el servidor de base de datos.
Índice
Entre los aspectos clave de Smart Scan se incluyen:
- Filtrado de predicados: En lugar de transferir bloques enteros de datos del almacenamiento a la base de datos, Smart Scan permite a los servidores de almacenamiento Exadata aplicar directamente operaciones de filtrado. Esto significa que sólo se devuelven las filas de datos relevantes, lo que reduce la transferencia de datos y mejora el rendimiento.
- Proyección de columnas: Sólo las columnas necesarias de una tabla, en función de la consulta, se devuelven desde el almacenamiento, lo que reduce aún más la cantidad de datos transferidos.
- Descompresión: Para los datos almacenados en formato de compresión columnar híbrida (HCC) de Oracle, Smart Scan permite a los servidores de almacenamiento descomprimir sólo las columnas y filas de interés, en lugar de descomprimir bloques de datos enteros, lo que agiliza y hace más eficaz el proceso de recuperación de datos.
- Lectura directa: Smart Scan se basa en el mecanismo de lectura directa de Oracle, que omite la memoria caché de la base de datos y lee los datos directamente en el área global del programa (PGA) del proceso, eliminando la sobrecarga de la gestión de la memoria caché.
- Requisito de escaneado completo: La exploración inteligente sólo se activa durante exploraciones de tablas completas o exploraciones rápidas de índices completos. Las consultas que acceden a los datos mediante exploraciones de rangos de índices u otros métodos no invocarán la Exploración inteligente.
- Requisitos de almacenamiento de Exadata: Las exploraciones inteligentes sólo son posibles para los datos almacenados en el almacenamiento Exadata, ya que dependen del software de almacenamiento especializado de Exadata.
Al reducir la cantidad de datos transferidos y el trabajo realizado por los servidores de bases de datos, Smart Scan acelera significativamente las operaciones con grandes volúmenes de datos, especialmente en cargas de trabajo analíticas que implican grandes exploraciones de tablas.
Sin embargo, hay condiciones que pueden desactivar la Exploración Inteligente, como el uso de ciertos tipos de datos (por ejemplo, LOBs), características como la Consulta Flashback, o cuando se consultan datos de almacenamiento no Exadata.
Para una verificación más detallada de si se ha producido una exploración inteligente, a menudo se emplean métodos de rastreo y herramientas de supervisión para analizar las métricas de rendimiento y los planes de ejecución .
1. Cómo utilizar Exadata Smart Scan
Para utilizar Escaneado inteligente en Oracle Exadata, hay ciertos prerrequisitos y configuraciones que deben cumplirse.
Smart Scan es invocado automáticamente por Oracle Exadata cuando se satisfacen determinados tipos de consultas y condiciones, normalmente durante escaneos completos de tablas.
A continuación le indicamos cómo puede asegurarse de que Smart Scan se utiliza de forma eficaz:
1.1 Garantizar escaneos completos de tablas o escaneos completos rápidos de índices
La exploración inteligente se activa principalmente durante:
- Escaneo de tabla completa: Cuando Oracle lee la tabla completa.
- Escaneado rápido de índices completos: Cuando Oracle recupera datos de índices en bloque.
Cómo activar:
- Utilice consultas que realicen exploraciones completas (p. ej,
SELECCIONAR *
sin cláusula WHERE indexada). - Evite las búsquedas fila por fila o las consultas que dependan en gran medida de mecanismos de indexación como los escaneos de rangos de índices.
Por ejemplo:
SELECT * FROM large_table WHERE column > 100;
1.2 Utilizar lecturas directas
La exploración inteligente se basa en lecturas de ruta directa, que omiten la caché del búfer de la base de datos y leen los datos directamente en el PGA. Las lecturas de ruta directa se utilizan normalmente durante el escaneo de tablas completas o la ejecución de consultas en paralelo.
Cómo activar:
- Utilice
PARALELO
o configurar el paralelismo para garantizar lecturas de ruta directa.
Por ejemplo:
SELECT /*+ PARALLEL(large_table, 8) */ * FROM large_table WHERE column > 100;
1.3 Almacenar datos en Exadata Storage
Smart Scan sólo funciona con datos almacenados en celdas de almacenamiento Exadata.
Asegúrese de que los datos a los que se accede están en Exadata, ya que los datos almacenados en un almacenamiento que no es Exadata (como NFS, SAN) no se beneficiarán de la exploración inteligente.
Cómo garantizar:
- Utilice Gestión automática del almacenamiento (ASM) en Exadata para el almacenamiento de su base de datos.
1.4 Utilizar tablas o conjuntos de datos de gran tamaño
Smart Scan está diseñado para optimizar el rendimiento de grandes conjuntos de datos.
No proporcionará beneficios notables para tablas pequeñas o consultas que recuperen un número reducido de filas.
Cómo garantizar:
- Destine tablas de gran tamaño al uso de Escaneado Inteligente, como las utilizadas en entornos de Almacenamiento de Datos.
1.5 Garantizar el uso de las funciones compatibles
Smart Scan está disponible para una variedad de operaciones tales como:
- Filtrado de predicados: Garantiza que sólo se devuelvan las filas que cumplan la cláusula WHERE.
- Proyección de columnas: Sólo se devuelven al servidor de base de datos las columnas requeridas.
Por ejemplo:
SELECT column1, column2 FROM large_table WHERE column3 > 100;
1.6. Evite las funciones que desactivan la exploración inteligente
Ciertas características de Oracle pueden impedir que se invoque Smart Scan.
Evite lo siguiente cuando intente utilizar Smart Scan:
- Exploraciones de rango de índices
- Bloqueo de filas
- Consulta retrospectiva
- Utilización de tipos de datos no admitidos como
LOBs
1.7 Supervisar y verificar el uso de Smart Scan
Puede verificar si se utilizó Smart Scan monitorizando las estadísticas de sesión o los planes de ejecución. Utilice herramientas de Oracle como:
- Supervisión SQL (
DBMS_SQLTUNE.REPORT_SQL_MONITOR
) - Busque estadísticas como
cell smart table scan
oescaneo de índice inteligente de celdas
.
Por ejemplo:
SELECT * FROM v$session_event WHERE event LIKE 'cell%';
2. ¿Debe utilizar índices con Exadata
El uso de índices en Oracle Exadata depende de la carga de trabajo y de los patrones de consulta.
Mientras que Exadata Escaneado inteligente y capacidad de descarga puede reducir en gran medida la dependencia de los índices para determinados tipos de cargas de trabajo, los índices siguen siendo muy relevantes para otras.
A continuación, le ofrecemos información detallada sobre cuándo y por qué puede seguir necesitando índices en Exadata:
2.1 Cuando los índices son menos importantes en Exadata
Exadata está diseñado para escanear grandes conjuntos de datos de manera eficiente, a menudo reduciendo o eliminando la necesidad de índices en escenarios como:
- Almacenamiento de datos y análisis:
- Las consultas que implican escaneos completos de tablas o que procesan grandes volúmenes de datos se benefician de Smart Scan.
- El filtrado de predicados y la proyección de columnas reducen la cantidad de datos devueltos, lo que agiliza las exploraciones.
- Compresión columnar híbrida (HCC):
- Exadata Compresión columnar híbrida puede hacer que los escaneos de tablas completas sean más eficientes al reducir significativamente el tamaño de los datos.
- OLAP (procesamiento analítico en línea):
- Las consultas analíticas que resumen o agregan datos en tablas de gran tamaño a menudo se basan en exploraciones completas, en las que Smart Scan proporciona un rendimiento óptimo.
- Ejecución paralela de consultas:
- Exadata soporta altos niveles de paralelismo, lo que le permite procesar grandes escaneos de forma eficiente.
En estos casos, la descarga de almacenamiento de Exadata puede sustituir la necesidad de determinados índices.
2.2 Cuando los índices siguen siendo esenciales
Aunque Exadata reduce la dependencia de los índices, sigue habiendo escenarios en los que son muy beneficiosos:
- OLTP (procesamiento de transacciones en línea):
- Las cargas de trabajo OLTP a menudo implican consultas pequeñas y selectivas (por ejemplo, la obtención de una sola fila o un pequeño rango de filas). En estos casos, los índices son fundamentales para el rendimiento, ya que evitan los escaneos completos al apuntar directamente a las filas relevantes.
Por ejemplo:SELECT nombre_cliente FROM clientes WHERE id_cliente = 101;
- Consultas muy selectivas:
- Si una consulta devuelve sólo unas pocas filas de un gran conjunto de datos, un índice puede superar a un escaneo completo de la tabla, incluso con Smart Scan.
- Operaciones frecuentes de LMD:
- Los índices pueden mejorar el rendimiento de las consultas en tablas que se actualizan con frecuencia, especialmente cuando las consultas se dirigen a filas específicas basadas en claves únicas o primarias.
- Únete a Operaciones:
- Los índices en columnas de unión pueden mejorar significativamente el rendimiento de las uniones en sistemas OLTP.
- Restricciones únicas:
- Los índices siguen siendo necesarios para aplicar restricciones únicas o claves primarias.
- Consultas no compatibles con Smart Scan:
- Smart Scan no funciona con:
- Exploración de rangos de índices
- Tablas pequeñas que no provocan escaneos completos
- Algunos tipos de datos como
LOBs
- Funciones como Flashback Query o almacenamiento en bloques
- Smart Scan no funciona con:
2.3 Mejores prácticas de Exadata: Equilibrio en el uso de índices
Para optimizar el rendimiento en Exadata, equilibre el uso de índices y Smart Scan siguiendo estas directrices:
- Centrarse en las consultas críticas:
- Analice la carga de trabajo para identificar las consultas que necesitan un acceso rápido y puntual a los datos. Utilice índices para esas consultas.
- Utilizar índices de almacenamiento:
- Exadata crea automáticamente índices de almacenamiento en el nivel de almacenamiento, que ayudan a eliminar la E/S innecesaria para grandes exploraciones. No requieren intervención manual.
- Limitar la sobreindexación:
- Evite crear demasiados índices, especialmente en tablas grandes utilizadas para análisis, ya que mantenerlos durante las operaciones DML puede resultar costoso.
- Pruebas y control:
- Utilice Planes de ejecución SQL y herramientas como Supervisión SQL para evaluar si los índices ayudan o perjudican al rendimiento.
Ejemplo
EXPLAIN PLAN FOR SELECT * FROM orders WHERE order_date > SYSDATE - 30; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());
2.4 Lo más importante
- Para análisis e informes a gran escalaEl Smart Scan de Exadata puede reducir la necesidad de índices tradicionales.
- Para OLTP o consultas selectivasLos índices siguen siendo cruciales.
- La estrategia óptima consiste en utilizar los índices con criterio, centrándose en los patrones de consulta y las necesidades de rendimiento.
Los índices y la exploración inteligente son complementarios, y comprender su carga de trabajo es clave para decidir cuándo utilizar uno u otro.
3. Lista de comprobación resumida para Smart Scan
- Utilice escaneos completos de tablas o escaneos completos rápidos de índices.
- Almacene los datos en el almacenamiento Exadata.
- Asegúrese de que la consulta utiliza lecturas de ruta directa.
- Utilizar tablas y conjuntos de datos de gran tamaño.
- Evite las funciones que desactivan la Exploración Inteligente (por ejemplo, Flashback, LOBs).
- Verifíquelo con estadísticas de rendimiento y herramientas de supervisión.
Siguiendo estos pasos, puede maximizar sus posibilidades de aprovechar Smart Scan para mejorar el rendimiento de sus consultas en Exadata.