{"id":6308,"date":"2025-03-01T16:55:30","date_gmt":"2025-03-01T15:55:30","guid":{"rendered":"http:\/\/rootfan.com\/?p=6308"},"modified":"2025-03-01T16:55:33","modified_gmt":"2025-03-01T15:55:33","slug":"indice-de-almacenamiento-exadata","status":"publish","type":"post","link":"https:\/\/rootfan.com\/es\/exadata-storage-index\/","title":{"rendered":"\u00cdndice de almacenamiento Exadata"},"content":{"rendered":"<p>Los \u00edndices de almacenamiento son una funci\u00f3n de Exadata dise\u00f1ada para mejorar el rendimiento mediante la reducci\u00f3n de la E\/S de disco. <\/p>\n\n\n\n<p>A diferencia de los \u00edndices tradicionales de \u00e1rbol B o mapa de bits, los \u00edndices de almacenamiento no almacenan valores espec\u00edficos para ayudar a encontrar registros; en su lugar, rastrean los valores m\u00ednimos, m\u00e1ximos y nulos de los datos en trozos de almacenamiento de 1 MB.<\/p>\n\n\n\n<p>As\u00ed es como funcionan:<\/p>\n\n\n\n<!--more-->\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Mecanismo de prefiltrado<\/strong>: Los \u00edndices de almacenamiento act\u00faan como un filtro previo. Cuando se ejecuta una consulta, Exadata comprueba los predicados (por ejemplo, las condiciones de la cl\u00e1usula WHERE) con los metadatos almacenados en los \u00edndices de almacenamiento (valores m\u00ednimos, m\u00e1ximos y nulos). Si el \u00edndice de almacenamiento muestra que ning\u00fan dato de un fragmento de almacenamiento de 1 MB coincide con las condiciones de la consulta, ese fragmento se omite, eliminando la necesidad de leerlo del disco.<\/li>\n\n\n\n<li><strong>Funci\u00f3n de s\u00f3lo memoria<\/strong>: Los \u00edndices de almacenamiento se guardan \u00edntegramente en la memoria de las c\u00e9lulas de almacenamiento y nunca se escriben en disco. Esto los hace vol\u00e1tiles, lo que significa que deben reconstruirse despu\u00e9s de reiniciar un servidor de almacenamiento.<\/li>\n\n\n\n<li><strong>Ocho columnas<\/strong>: Un \u00edndice de almacenamiento puede rastrear hasta ocho columnas de una tabla. No almacena los detalles de cada columna, sino que mantiene din\u00e1micamente las que se consultan con m\u00e1s frecuencia.<\/li>\n\n\n\n<li><strong>Optimizaci\u00f3n de consultas<\/strong>: Los \u00edndices de almacenamiento son especialmente beneficiosos cuando se utilizan con Smart Scans, una funci\u00f3n de Exadata que permite que el procesamiento de consultas se realice en el servidor de almacenamiento. Al filtrar previamente los datos irrelevantes, los \u00edndices de almacenamiento ayudan a Smart Scans a reducir la cantidad de datos procesados y devueltos a la capa de base de datos.<\/li>\n\n\n\n<li><strong>Tratamiento de los nulos<\/strong>: Los \u00edndices de almacenamiento tambi\u00e9n proporcionan una optimizaci\u00f3n \u00fanica para las consultas que implican valores nulos, permitiendo b\u00fasquedas m\u00e1s r\u00e1pidas en columnas que contienen nulos al eliminar las regiones no nulas de ser le\u00eddas.<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>\u00cdndice<\/h2><nav><ul><li><a href=\"#example-of-exadata-storage-index\">Ejemplo de \u00edndice de almacenamiento Exadata<\/a><ul><li><a href=\"#scenario\">Escenario<\/a><\/li><li><a href=\"#query\">Consulta<\/a><\/li><li><a href=\"#storage-index-behavior\">Comportamiento del \u00edndice de almacenamiento<\/a><\/li><li><a href=\"#benefit\">Beneficio<\/a><\/li><\/ul><\/li><li><a href=\"#ddl-of-table-and-index-creation\">DDL de creaci\u00f3n de tablas e \u00edndices:<\/a><ul><li><a href=\"#example-ddl-for-the-orders-table\">Ejemplo de DDL para la tabla de pedidos<\/a><\/li><li><a href=\"#note-on-storage-indexes-in-exadata\">Nota sobre los \u00edndices de almacenamiento en Exadata<\/a><\/li><li><a href=\"#example-of-traditional-index-creation-if-using-a-non-exadata-system\">Ejemplo de creaci\u00f3n de \u00edndice tradicional (si se utiliza un sistema que no sea Exadata)<\/a><\/li><li><a href=\"#how-storage-indexes-work-in-exadata\">C\u00f3mo funcionan los \u00edndices de almacenamiento en Exadata<\/a><\/li><\/ul><\/li><li><a href=\"#how-to-check-if-a-storage-index-has-been-used\">C\u00f3mo comprobar si se ha utilizado un \u00edndice de almacenamiento<\/a><ul><li><a href=\"#1-v-sesstat-view\">1. Vista V$SESSTAT<\/a><\/li><li><a href=\"#2-exadata-specific-wait-events\">2. Eventos de espera espec\u00edficos de Exadata<\/a><\/li><li><a href=\"#3-cell-cli-command-on-the-storage-cells\">3. Comando CellCLI (en las c\u00e9lulas de almacenamiento)<\/a><\/li><li><a href=\"#4-sql-monitoring-report\">4. Informe de supervisi\u00f3n SQL<\/a><\/li><li><a href=\"#5-dba-hist-sysstat-view-historical-monitoring\">5. Vista DBA_HIST_SYSSTAT (Supervisi\u00f3n hist\u00f3rica)<\/a><\/li><li><a href=\"#summary\">Resumen<\/a><\/li><\/ul><\/li><li><a href=\"#dont-you-need-to-create-indexes-in-exadata\">\u00bfEs necesario crear \u00edndices en Exadata?<\/a><ul><li><a href=\"#1-when-storage-indexes-are-sufficient\">1. Cuando los \u00edndices de almacenamiento son suficientes<\/a><\/li><li><a href=\"#2-when-traditional-indexes-are-still-needed\">2. Cu\u00e1ndo siguen siendo necesarios los \u00edndices tradicionales<\/a><\/li><li><a href=\"#3-special-cases-where-you-may-still-want-traditional-indexes\">3. Casos especiales en los que puede seguir necesitando \u00edndices tradicionales<\/a><\/li><li><a href=\"#4-mixed-workloads\">4. Cargas de trabajo mixtas<\/a><\/li><li><a href=\"#conclusion\">Conclusi\u00f3n:<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<p>En la pr\u00e1ctica, los \u00edndices de almacenamiento pueden mejorar dr\u00e1sticamente el rendimiento. <\/p>\n\n\n\n<p>Son m\u00e1s eficaces cuando los datos de las regiones de almacenamiento est\u00e1n bien agrupados u ordenados. <\/p>\n\n\n\n<p>Sin embargo, existen limitaciones: no funcionan con determinados tipos de datos (por ejemplo, los CLOB) ni con operadores de comparaci\u00f3n (por ejemplo, \"!=\").<\/p>\n\n\n\n<p>En resumen, los \u00edndices de almacenamiento ayudan a reducir la E\/S de disco al permitir que el sistema Exadata omita la lectura de regiones de almacenamiento que no pueden contener datos relevantes, lo que se traduce en un aumento significativo del rendimiento de las consultas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"example-of-exadata-storage-index\">Ejemplo de \u00edndice de almacenamiento Exadata<\/h2>\n\n\n\n<p>He aqu\u00ed un ejemplo para ilustrar c\u00f3mo funcionan los \u00edndices de almacenamiento en Exadata:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"scenario\">Escenario<\/h3>\n\n\n\n<p>Supongamos que tiene una tabla <code>pedidos<\/code> que contiene las siguientes columnas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>orden_id<\/code><\/li>\n\n\n\n<li><code>fecha_pedido<\/code><\/li>\n\n\n\n<li><code>customer_id<\/code><\/li>\n\n\n\n<li><code>importe_total<\/code><\/li>\n<\/ul>\n\n\n\n<p>La tabla tiene 1 mill\u00f3n de filas y los datos est\u00e1n distribuidos en varias regiones de almacenamiento de un sistema Exadata.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"query\">Consulta<\/h3>\n\n\n\n<p>Ejecute la siguiente consulta para recuperar los pedidos realizados en un intervalo de fechas espec\u00edfico:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT * \nFROM orders \nWHERE order_date BETWEEN &#039;2024-01-01&#039; AND &#039;2024-01-31&#039;;\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"storage-index-behavior\">Comportamiento del \u00edndice de almacenamiento<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Creaci\u00f3n de \u00edndices de almacenamiento<\/strong>: Exadata crea autom\u00e1ticamente \u00edndices de almacenamiento cuando se accede con frecuencia a la tabla. <br>Por cada trozo de 1 MB de datos almacenados en las celdas de almacenamiento, Exadata registra el <strong>m\u00ednimo<\/strong> y <strong>m\u00e1ximo<\/strong> valores para el <code>fecha_pedido<\/code> columna. <br><br>Ejemplo de \u00edndice de almacenamiento para una regi\u00f3n de almacenamiento:\n<ul class=\"wp-block-list\">\n<li><strong>Regi\u00f3n 1<\/strong>: <code>MIN(fecha_pedido) = '2023-11-15', MAX(fecha_pedido) = '2024-02-10'<\/code><\/li>\n\n\n\n<li><strong>Regi\u00f3n 2<\/strong>: <code>MIN(fecha_pedido) = '2024-03-01', MAX(fecha_pedido) = '2024-03-31'<\/code><\/li>\n\n\n\n<li><strong>Regi\u00f3n 3<\/strong>: <code>MIN(fecha_pedido) = '2023-10-05', MAX(fecha_pedido) = '2023-11-01'<\/code><br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Ejecuci\u00f3n de consultas<\/strong>: Cuando ejecuta la consulta para buscar pedidos de enero de 2024, Exadata busca primero en los \u00edndices de almacenamiento.<br>\n<ul class=\"wp-block-list\">\n<li><strong>Regi\u00f3n 1<\/strong> contiene fechas comprendidas entre <code>'2023-11-15'<\/code> y <code>'2024-02-10'<\/code>por lo que esta regi\u00f3n <strong>se leer\u00e1<\/strong> ya que incluye parte de enero de 2024.<\/li>\n\n\n\n<li><strong>Regi\u00f3n 2<\/strong> contiene fechas comprendidas entre <code>'2024-03-01'<\/code> y <code>'2024-03-31'<\/code>por lo que Exadata <strong>se salta esta regi\u00f3n<\/strong> completamente porque queda fuera del intervalo de consulta.<\/li>\n\n\n\n<li><strong>Regi\u00f3n 3<\/strong> contiene fechas comprendidas entre <code>'2023-10-05'<\/code> y <code>'2023-11-01'<\/code>por lo que Exadata <strong>se salta esta regi\u00f3n<\/strong> ya que es irrelevante para la consulta.<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Reducci\u00f3n de datos<\/strong>: En lugar de escanear toda la tabla, Exadata s\u00f3lo lee las regiones relevantes del disco. <br>Esto reduce la E\/S, acelera la consulta y optimiza el rendimiento del sistema.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"benefit\">Beneficio<\/h3>\n\n\n\n<p>En este caso, como Exadata omiti\u00f3 regiones de almacenamiento irrelevantes (Regi\u00f3n 2 y Regi\u00f3n 3), la consulta finaliza m\u00e1s r\u00e1pido, lo que se traduce en unos costes de E\/S significativamente menores. <\/p>\n\n\n\n<p>Este es un ejemplo de c\u00f3mo los \u00edndices de almacenamiento ayudan a Exadata a omitir datos innecesarios y mejorar el rendimiento de las consultas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ddl-of-table-and-index-creation\">DDL de creaci\u00f3n de tablas e \u00edndices:<\/h2>\n\n\n\n<p>A continuaci\u00f3n se muestra un ejemplo del lenguaje de definici\u00f3n de datos (DDL) para crear el archivo <code>pedidos<\/code> y c\u00f3mo se crear\u00eda un \u00edndice en ella (si fuera necesario). <\/p>\n\n\n\n<p>Tenga en cuenta que <strong>\u00edndices de almacenamiento<\/strong> en Exadata no son creados expl\u00edcitamente por un DBA. <\/p>\n\n\n\n<p>El software de almacenamiento de Exadata los gestiona autom\u00e1ticamente en funci\u00f3n de los datos a los que se accede. <\/p>\n\n\n\n<p>Sin embargo, tambi\u00e9n mostrar\u00e9 c\u00f3mo se crear\u00eda normalmente un \u00edndice si se trata de un entorno sin Exadata.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-ddl-for-the-orders-table\">Ejemplo de DDL para <code>pedidos<\/code> Cuadro<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nCREATE TABLE orders (\n    order_id       NUMBER PRIMARY KEY,\n    order_date     DATE,\n    customer_id    NUMBER,\n    total_amount   NUMBER(10, 2)\n);\n<\/pre><\/div>\n\n\n<p>Esto crea una <code>pedidos<\/code> mesa con un <code>clave primaria<\/code> en <code>orden_id<\/code>. <\/p>\n\n\n\n<p>En <code>fecha_pedido<\/code> ser\u00e1 la que intervenga en el filtrado de consultas del ejemplo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"note-on-storage-indexes-in-exadata\">Nota sobre los \u00edndices de almacenamiento en Exadata<\/h3>\n\n\n\n<p>En <strong>Exadata<\/strong>, t\u00fa <strong>no crear manualmente \u00edndices de almacenamiento<\/strong>. <\/p>\n\n\n\n<p>Exadata las gestiona autom\u00e1ticamente en memoria en funci\u00f3n de las consultas que acceden con frecuencia a determinadas columnas. <\/p>\n\n\n\n<p>No se puede controlar la creaci\u00f3n del \u00edndice de almacenamiento como se hace con los \u00edndices tradicionales (por ejemplo, B-tree o bitmap).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"example-of-traditional-index-creation-if-using-a-non-exadata-system\">Ejemplo de creaci\u00f3n de \u00edndice tradicional (si se utiliza un sistema que no sea Exadata)<\/h3>\n\n\n\n<p>Si quisiera crear un \u00edndice de \u00e1rbol B tradicional en <code>fecha_pedido<\/code>escribir\u00edas algo as\u00ed:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nCREATE INDEX idx_order_date \nON orders (order_date);\n<\/pre><\/div>\n\n\n<p>Este \u00edndice tradicional ayuda a optimizar las consultas que filtran en el <code>fecha_pedido<\/code>pero funciona de forma diferente a <strong>\u00edndices de almacenamiento<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"how-storage-indexes-work-in-exadata\">C\u00f3mo funcionan los \u00edndices de almacenamiento en Exadata<\/h3>\n\n\n\n<p>Con Exadata, no es necesario crear un \u00edndice expl\u00edcito en <code>fecha_pedido<\/code> para beneficiarse de los \u00edndices de almacenamiento. <\/p>\n\n\n\n<p>El sistema Exadata crea y utiliza din\u00e1micamente <strong>\u00edndices de almacenamiento<\/strong> en el nivel de la celda de almacenamiento siempre que detecte que una determinada columna (como <code>fecha_pedido<\/code>) se consulta con frecuencia. <\/p>\n\n\n\n<p>Realiza un seguimiento de los valores m\u00ednimos y m\u00e1ximos de cada bloque de almacenamiento, lo que permite al sistema omitir bloques irrelevantes durante una consulta.<\/p>\n\n\n\n<p>Resumiendo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u00cdndice tradicional<\/strong>: Se crea manualmente (como se muestra en el ejemplo anterior).<\/li>\n\n\n\n<li><strong>\u00cdndice de almacenamiento<\/strong> (Exadata): Gestionado autom\u00e1ticamente por el sistema, no requiere DDL.<\/li>\n<\/ul>\n\n\n\n<p>Si ejecuta su base de datos en una m\u00e1quina Exadata, s\u00f3lo tiene que ejecutar sus consultas y Exadata utilizar\u00e1 autom\u00e1ticamente \u00edndices de almacenamiento para optimizarlas en funci\u00f3n de los patrones de consulta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-check-if-a-storage-index-has-been-used\">C\u00f3mo comprobar si se ha utilizado un \u00edndice de almacenamiento<\/h2>\n\n\n\n<p>En Oracle Exadata, los \u00edndices de almacenamiento son gestionados autom\u00e1ticamente por el sistema, pero usted puede monitorizar y comprobar si los \u00edndices de almacenamiento est\u00e1n siendo utilizados durante la ejecuci\u00f3n de consultas utilizando varias herramientas de monitorizaci\u00f3n y vistas.<\/p>\n\n\n\n<p>He aqu\u00ed algunas formas de verificar si se ha creado o utilizado un \u00edndice de almacenamiento durante la ejecuci\u00f3n de una consulta:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-v-sesstat-view\">1. <strong>V$SESSTAT Ver<\/strong><\/h3>\n\n\n\n<p>Puede consultar las estad\u00edsticas de uso del \u00edndice de almacenamiento por sesi\u00f3n mediante la funci\u00f3n <code>V$SESSTAT<\/code> que contiene estad\u00edsticas a nivel de sesi\u00f3n. <\/p>\n\n\n\n<p>En concreto, la estad\u00edstica <code>celda f\u00edsica IO bytes guardados por \u00edndice de almacenamiento<\/code> indicar\u00e1 si se han utilizado \u00edndices de almacenamiento.<\/p>\n\n\n\n<p>A continuaci\u00f3n se muestra una consulta que puede utilizar para comprobar si los \u00edndices de almacenamiento fueron utilizados por una sesi\u00f3n en particular:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT s.sid, \n       s.value AS &quot;Bytes Saved by Storage Index&quot;\nFROM v$sesstat s\nJOIN v$statname n ON s.statistic# = n.statistic#\nWHERE n.name = &#039;cell physical IO bytes saved by storage index&#039;;\n<\/pre><\/div>\n\n\n<p>Si la consulta devuelve un valor positivo en el campo <code>Bytes ahorrados por \u00edndice de almacenamiento<\/code> indica que se utilizaron \u00edndices de almacenamiento durante la ejecuci\u00f3n de la consulta para esa sesi\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-exadata-specific-wait-events\">2. <strong>Eventos de espera espec\u00edficos de Exadata<\/strong><\/h3>\n\n\n\n<p>Otro indicador del uso del \u00edndice de almacenamiento es la reducci\u00f3n de los eventos de espera relacionados con la E\/S. <\/p>\n\n\n\n<p>Puede supervisar eventos de espera espec\u00edficos en Exadata, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>cell smart table scan<\/code><\/li>\n\n\n\n<li><code>escaneo de \u00edndice inteligente de celdas<\/code><\/li>\n<\/ul>\n\n\n\n<p>Estos eventos indican que se est\u00e1n realizando escaneos inteligentes y que, por extensi\u00f3n, los \u00edndices de almacenamiento pueden haber participado en la reducci\u00f3n de los datos a escanear.<\/p>\n\n\n\n<p>Para comprobar los eventos de espera espec\u00edficos de Exadata:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT event, total_waits, time_waited\nFROM v$session_event\nWHERE event LIKE &#039;cell smart%&#039;;\n<\/pre><\/div>\n\n\n<p>Un elevado n\u00famero de esperas para <code>cell smart table scan<\/code> puede indicar que se han utilizado \u00edndices de almacenamiento para omitir datos irrelevantes durante la exploraci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-cell-cli-command-on-the-storage-cells\">3. <strong>Comando CellCLI (en las celdas de almacenamiento)<\/strong><\/h3>\n\n\n\n<p>Si tiene acceso a las celdas de almacenamiento propiamente dichas, puede utilizar la funci\u00f3n <strong>CellCLI<\/strong> (Cell Command-Line Interface) para supervisar y analizar el rendimiento de las c\u00e9lulas de almacenamiento. Esto incluye comprobar si se est\u00e1n utilizando los \u00edndices de almacenamiento.<\/p>\n\n\n\n<p>Para listar las estad\u00edsticas actuales de los \u00edndices de almacenamiento de una c\u00e9lula de almacenamiento, puede ejecutar lo siguiente <strong>CellCLI<\/strong> mando:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nCellCLI&gt; list metriccurrent where objectType = &#039;CELLIODATA&#039; and name = &#039;DB_IO_BY_STORIDX&#039;\n<\/pre><\/div>\n\n\n<p>Esto mostrar\u00e1 las m\u00e9tricas relacionadas con el uso del \u00edndice de almacenamiento en esa celda de almacenamiento en particular. <\/p>\n\n\n\n<p>Busque valores en <code>DB_IO_POR_STORIDX<\/code> que indica cu\u00e1ntos datos se han ahorrado mediante el uso de \u00edndices de almacenamiento.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4-sql-monitoring-report\">4. <strong>Informe de supervisi\u00f3n SQL<\/strong><\/h3>\n\n\n\n<p>Cuando se ejecuta una consulta apta para la Exploraci\u00f3n inteligente (y potencialmente para el uso de \u00edndices de almacenamiento), se puede generar un <strong>Informe de supervisi\u00f3n SQL<\/strong> para obtener informaci\u00f3n detallada sobre la ejecuci\u00f3n. <\/p>\n\n\n\n<p>El informe de supervisi\u00f3n de SQL le mostrar\u00e1:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si se ha utilizado la Exploraci\u00f3n Inteligente.<\/li>\n\n\n\n<li>Cu\u00e1ntos datos se filtraron utilizando los \u00edndices de almacenamiento.<\/li>\n<\/ul>\n\n\n\n<p>Para generar el informe de supervisi\u00f3n de SQL, puede utilizar el siguiente comando SQL:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT dbms_sqltune.report_sql_monitor(sql_id =&gt; &#039;your_sql_id&#039;) \nFROM dual;\n<\/pre><\/div>\n\n\n<p>Este informe permitir\u00e1 saber si se utilizaron \u00edndices de almacenamiento, observando la reducci\u00f3n de datos procesados durante los escaneos inteligentes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"5-dba-hist-sysstat-view-historical-monitoring\">5. <strong>Vista DBA_HIST_SYSSTAT (Supervisi\u00f3n hist\u00f3rica)<\/strong><\/h3>\n\n\n\n<p>Para comprobar el uso hist\u00f3rico de los \u00edndices de almacenamiento a lo largo del tiempo, puede consultar la base de datos <code>DBA_HIST_SYSSTAT<\/code> que registra las estad\u00edsticas de todo el sistema durante un periodo de tiempo.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code\" data-no-translation=\"\"><pre class=\"brush: sql; title: ; notranslate\" title=\"\">\nSELECT s.snap_id,\n       s.instance_number,\n       ss.value AS &quot;Storage Index IO Bytes Saved&quot;\nFROM dba_hist_sysstat ss\nJOIN dba_hist_snapshot s ON ss.snap_id = s.snap_id\nWHERE ss.stat_name = &#039;cell physical IO bytes saved by storage index&#039;;\n<\/pre><\/div>\n\n\n<p>Esta consulta proporcionar\u00e1 una visi\u00f3n general de cu\u00e1ntos bytes de E\/S f\u00edsica fueron guardados por los \u00edndices de almacenamiento a lo largo del tiempo, tal y como se registra en las instant\u00e1neas AWR (Automatic Workload Repository).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"summary\">Resumen<\/h3>\n\n\n\n<p>No puede crear manualmente \u00edndices de almacenamiento en Exadata, pero puede supervisar y verificar su uso:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Comprobaci\u00f3n de las estad\u00edsticas a nivel de sesi\u00f3n (<code>V$SESSTAT<\/code>).<\/li>\n\n\n\n<li>An\u00e1lisis de los eventos de espera de Exadata (<code>cell smart table scan<\/code>).<\/li>\n\n\n\n<li>Uso de comandos CellCLI en las c\u00e9lulas de almacenamiento.<\/li>\n\n\n\n<li>Generaci\u00f3n de informes de supervisi\u00f3n de SQL.<\/li>\n\n\n\n<li>Observando las estad\u00edsticas hist\u00f3ricas del sistema (<code>DBA_HIST_SYSSTAT<\/code>).<\/li>\n<\/ol>\n\n\n\n<p>Estas herramientas le permitir\u00e1n ver si se crearon \u00edndices de almacenamiento y cu\u00e1ndo se utilizaron para mejorar el rendimiento de las consultas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dont-you-need-to-create-indexes-in-exadata\">\u00bfEs necesario crear \u00edndices en Exadata?<\/h2>\n\n\n\n<p>No necesariamente. <\/p>\n\n\n\n<p>En <strong>\u00edndices de almacenamiento<\/strong> en Exadata son gestionados autom\u00e1ticamente y creados din\u00e1micamente por el sistema para optimizar el rendimiento, <strong>\u00edndices tradicionales<\/strong> (como los \u00edndices B-tree o bitmap) pueden seguir siendo beneficiosos en algunos casos. <\/p>\n\n\n\n<p>A continuaci\u00f3n se explica cu\u00e1ndo puede ser necesario crear \u00edndices tradicionales en Exadata y cu\u00e1ndo no:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"1-when-storage-indexes-are-sufficient\">1. <strong>Cuando los \u00edndices de almacenamiento son suficientes<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Acceso secuencial a datos<\/strong>: Si la mayor\u00eda de sus consultas implican el escaneo secuencial de grandes cantidades de datos (por ejemplo, consultas de almac\u00e9n de datos con escaneo completo de tablas), la tecnolog\u00eda de Exadata <strong>Escaneados inteligentes<\/strong> y <strong>\u00edndices de almacenamiento<\/strong> puede ser extremadamente eficaz para reducir la E\/S y mejorar el rendimiento.<\/li>\n\n\n\n<li><strong>Consultas por rangos<\/strong>: Para consultas de rango (como rangos de fechas), los \u00edndices de almacenamiento pueden ayudar a omitir bloques irrelevantes y minimizar la E\/S de disco sin necesidad de \u00edndices tradicionales.<\/li>\n\n\n\n<li><strong>Naturaleza din\u00e1mica<\/strong>: Los \u00edndices de almacenamiento se crean y mantienen din\u00e1micamente en memoria, lo que significa que pueden ajustarse en funci\u00f3n de los patrones de carga de trabajo sin requerir la intervenci\u00f3n del DBA.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"2-when-traditional-indexes-are-still-needed\">2. <strong>Cuando los \u00edndices tradicionales siguen siendo necesarios<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cargas de trabajo OLTP (procesamiento de transacciones en l\u00ednea)<\/strong>: En <strong>Entornos OLTP<\/strong>cuando las consultas suelen acceder a filas individuales o a peque\u00f1os conjuntos de datos (por ejemplo, buscar un cliente por su ID), las tradicionales <strong>\u00cdndices de \u00e1rbol B<\/strong> puede seguir siendo necesario. <br>Los \u00edndices de almacenamiento de Exadata son m\u00e1s eficaces para reducir la E\/S durante las exploraciones completas, pero no se utilizan en las b\u00fasquedas de una sola fila.<\/li>\n\n\n\n<li><strong>Condiciones de adhesi\u00f3n<\/strong>: Si sus consultas implican uniones en columnas que no son claves primarias, los \u00edndices tradicionales (por ejemplo, un \u00edndice de \u00e1rbol B o de mapa de bits) pueden ayudar a mejorar el rendimiento de las uniones reduciendo el n\u00famero de filas escaneadas.<\/li>\n\n\n\n<li><strong>Actualizaci\u00f3n de datos<\/strong>: En entornos con frecuentes <strong>actualiza o elimina<\/strong>Los \u00edndices tradicionales pueden ayudar a garantizar la eficacia del acceso a las filas y las operaciones de mantenimiento.<\/li>\n\n\n\n<li><strong>Consultas de exploraci\u00f3n inteligente no admisibles<\/strong>: No todas las consultas pueden utilizar la Exploraci\u00f3n inteligente (por ejemplo, las consultas contra tablas peque\u00f1as o las que implican operadores complejos). <br>Para esas consultas, los \u00edndices tradicionales pueden seguir siendo \u00fatiles.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"3-special-cases-where-you-may-still-want-traditional-indexes\">3. <strong>Casos especiales en los que puede seguir necesitando \u00edndices tradicionales<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Restricciones \u00fanicas<\/strong>: La creaci\u00f3n de \u00edndices en columnas con restricciones \u00fanicas (por ejemplo, claves \u00fanicas, claves primarias) sigue siendo necesaria para garantizar la integridad de los datos.<\/li>\n\n\n\n<li><strong>Relaciones entre claves extranjeras<\/strong>: Los \u00edndices sobre claves externas pueden seguir siendo \u00fatiles para evitar el escaneo completo de la tabla durante las actualizaciones o eliminaciones en las tablas principales.<\/li>\n\n\n\n<li><strong>Sistemas no Exadata<\/strong>: Si tiene entornos mixtos en los que se puede acceder a los datos en sistemas Exadata y no Exadata, es posible que los \u00edndices tradicionales sigan siendo necesarios para optimizar el rendimiento en plataformas no Exadata.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"4-mixed-workloads\">4. <strong>Cargas de trabajo mixtas<\/strong><\/h3>\n\n\n\n<p>Para los sistemas que tienen <strong>cargas de trabajo mixtas<\/strong> (una combinaci\u00f3n de OLTP e informes), los \u00edndices tradicionales pueden complementar los \u00edndices de almacenamiento de Exadata. <\/p>\n\n\n\n<p>Por ejemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cargas de trabajo OLTP<\/strong> se benefician de los \u00edndices tradicionales para consultar r\u00e1pidamente las filas.<\/li>\n\n\n\n<li><strong>Consultas anal\u00edticas<\/strong> Benef\u00edciese de los \u00edndices de almacenamiento de Exadata para realizar exploraciones eficientes a gran escala.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"conclusion\">Conclusi\u00f3n:<\/h3>\n\n\n\n<p>En <strong>\u00edndices de almacenamiento<\/strong> pueden reducir la necesidad de \u00edndices tradicionales en Exadata, no son un sustituto completo. A\u00fan debe considerar la creaci\u00f3n de <strong>\u00edndices tradicionales<\/strong> para:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Entornos OLTP o cargas de trabajo mixtas.<\/li>\n\n\n\n<li>Consultas que requieren b\u00fasquedas precisas de filas.<\/li>\n\n\n\n<li>Aplicaci\u00f3n de restricciones \u00fanicas y relaciones de clave externa.<\/li>\n<\/ul>\n\n\n\n<p>En un entorno de almac\u00e9n de datos en el que los escaneos completos de tablas son habituales, los \u00edndices de almacenamiento, combinados con Smart Scan y las optimizaciones de Exadata, pueden reducir en gran medida la necesidad de indexaci\u00f3n tradicional. <\/p>\n\n\n\n<p>Sin embargo, para cargas de trabajo OLTP o casos que impliquen consultas selectivas o condiciones de uni\u00f3n, los \u00edndices tradicionales pueden seguir siendo esenciales para un rendimiento \u00f3ptimo.<\/p>","protected":false},"excerpt":{"rendered":"<p>Los \u00edndices de almacenamiento son una funci\u00f3n de Exadata dise\u00f1ada para mejorar el rendimiento mediante la reducci\u00f3n de la E\/S de disco. A diferencia de los \u00edndices B-tree o bitmap tradicionales, los \u00edndices de almacenamiento no almacenan valores espec\u00edficos para ayudar a encontrar registros; en su lugar, rastrean los valores m\u00ednimos, m\u00e1ximos y nulos de los datos en trozos de almacenamiento de 1 MB. Funcionan de la siguiente manera:<\/p>","protected":false},"author":1,"featured_media":6318,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_focus_keyword":"exadata storage index","rank_math_title":"","rank_math_description":"Improve query performance with Exadata Storage Index. Accelerate data access and optimize database operations. Get the details here!","rank_math_robots":"","rank_math_og_title":"","rank_math_og_description":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[116],"tags":[117,114],"class_list":["post-6308","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-exadata","tag-exadata-features","tag-storage-index"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rootfan.com\/wp-content\/uploads\/pexels-photo-355747-1.jpeg?fit=1880%2C1022&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/6308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/comments?post=6308"}],"version-history":[{"count":14,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/6308\/revisions"}],"predecessor-version":[{"id":6418,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/posts\/6308\/revisions\/6418"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media\/6318"}],"wp:attachment":[{"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/media?parent=6308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/categories?post=6308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rootfan.com\/es\/wp-json\/wp\/v2\/tags?post=6308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}