Upload
ivaniablandino
View
18
Download
1
Tags:
Embed Size (px)
Citation preview
Table Compression
Enhancements
*La compresión de tablas fue incorporada desde Oracle 9i, como una función de ahorro de espacio para los proyectos de almacenamiento de datos.
*Además de ahorrar espacio de almacenamiento, la compresión puede resultar en un mayor rendimiento de E / S y el uso reducido de la memoria en la caché del búfer. Estas ventajas vienen a un costo, ya que la compresión incurre en una sobrecarga de la CPU, por lo que no van a ser de beneficio para todos.
*Nota. Compresión de tablas es una función gratuita de la base de datos Enterprise Edition, pero la compresión OLTP requiere la opción Advanced Compression la cual requiere una licencia especial.
*La cláusula de compresión se puede especificar a nivel de tablespace, la tabla o partición con las siguientes opciones:
*NOCOMPRESS - La tabla o partición no se comprime. Esta es la acción por defecto cuando no se especifica ninguna cláusula de compresión.
*COMPRESS - Esta opción se considera adecuado para los sistemas de almacenamiento de datos. La compresión está habilitada en la tabla o partición durante la trayectoria directa para inserción.
*COMPRESS FOR DIRECT_LOAD OPERATIONS - Esta opción tiene el mismo efecto que el simple la cláusula COMPRESS.
*COMPRESS FOR ALL OPERATIONS - Esta opción se considera adecuado para sistemas OLTP. Como su nombre lo indica, esta opción permite la compresión de todas las operaciones, incluidas las declaraciones regulares DML. Esta opción requiere que el parámetro de inicialización COMPATIBLE que esta disponible a partir de la versión 11.1.0. En 11gR2 esta opción ha sido renombrado a COMPRESS FOR OLTP y el nombre original ha quedado obsoleto.
*Los siguientes ejemplos muestran las diferentes opciones de compresión aplicada a nivel de tablas y particiones:
*Los ajustes de compresión a nivel de tabla se reflejan en las columnas COMPRESSION y COMPRESS_FOR de las vistas [DBA|ALL|USER]_TABLES.
Las tablas definidas con COMPRESSION a nivel de partición o a nivel de tabla no muestran valores en la columna COMPRESSION.
Los justes de compresión a nivel de partición se reflejan en las columnas COMPRESSION y COMPRESS_FOR de las vistas [DBA|ALL|USER]_TAB_PARTITIONS.
Los ajustes de compresión para tablas y las particiones pueden ser modificados mediante el comando ALTER TABLE. Las alteraciones no tienen ningún efecto en los datos existentes, sólo en las nuevas operaciones aplicadas a la tabla.
Los ajustes predeterminados de compresión se pueden especificar a nivel de tabla utilizando los comandos CREATE TABLESPACE y ALTER TABLESPACE. Los ajustes actuales se muestran en las columnas DEF_TAB_COMPRESSION y COMPRESS_FOR de la vista DBA_TABLESPACES.
Cuando se especifica la compresión en múltiples niveles, siempre se utiliza el ajuste más específico. Como tal, la configuración de las particiones siempre anulan los ajustes de la tabla, que siempre prevalece sobre la configuración del espacio de tablas.
Las restricciones asociadas con la compresión de la tabla son:
*Las tablas comprimidas sólo se les pueden agregar o eliminar columnas si se utilizó opción COMPRESS FOR ALL OPERATIONS.
*Las tablas comprimidas no debe tener más de 255 columnas.
*La compresión no se aplica en lob segments.
*La compresion de tablas es valida solo para Heap Organized Tables (HOT) y no para IOT (Index Organized Tables).
*La cláusula de compresión no se puede aplicar a particiones hash o hash-list. En su lugar, deben heredar sus ajustes de compresión del tablespace, de la tabla o configuración de las particiones.
*La compresión de la tabla no se puede especificar para las tablas externas.
* Beneficios de la compresión de tabla OLTP
La relación de compresión logrado en un entorno determinado depende de la naturaleza de los datos que se están comprimiendo; específicamente la cardinalidad de los datos. En general, los clientes pueden esperar reducir su consumo de espacio de almacenamiento en un factor de 2x a 4x utilizando la función de compresión de tabla OLTP. Es decir, la cantidad de espacio consumido por los datos ressed uncomp será de dos a cuatro veces mayor que el de la ATA comprimido.
Los beneficios de la compresión de tabla OLTP van más allá de sólo el ahorro de almacenamiento en disco. Una ventaja significativa es la capacidad de Oracle para leer bloques comprimidos directamente sin tener que descomprimir primero el bloque. Por lo tanto, no hay medición de degradación del rendimiento capaz de acceder a los datos comprimidos. De hecho, en muchos casos, el rendimiento puede mejorar debido a la reducción de E / S desde Oracle tendrá que acceder a un menor número de bloques. Además, la caché del búfer será más eficiente al almacenar más datos, sin tener que agregar memoria.
* Una sobrecarga mínima de rendimiento
Como se indicó anteriormente, la compresión de tabla OLTP no tiene impacto negativo en las operaciones de lectura. Hay trabajo adicional realizado durante la escritura de datos, por lo que es imposible eliminar la sobrecarga de rendimiento para operaciones de escritura. Sin embargo, Oracle ha puesto en un significativo montaje de la obra para minimizar esta sobrecarga de compresión de tabla OLTP. Oracle comprime bloques en modo de lotes en lugar de la compresión de datos cada vez que una operación de escritura tiene lugar. Un bloque recién inicializado permanece sin comprimir hasta que los datos en el bloque alcanza un umbral controlado internamente. Cuando una transacción hace que los datos en el bloque lleguen a este umbral, todos los contenidos del bloque se comprimen. Posteriormente, a medida que más datos se añade al bloque y el umbral se alcanza de nuevo, el bloque entero se vuelve a comprimir para lograr el más alto nivel de compresión. Este proceso se repite hasta que Oracle determina que el bloque ya no puede beneficiarse de una mayor compresión. Sólo las transacciones que provocan la compresión del bloque experimentarán la ligera sobrecarga de compresión. Por lo tanto, la mayoría de las transacciones OLTP en bloques comprimido tendrá el mismo rendimiento exacto como lo harían con los bloques sin comprimir.