Configurar la compresión de datos - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar la compresión de datos

Puede comprimir las tablas e índices de las tablas de datos EnterpriseOne empresariales y de control mediante la compresión de páginas o filas. La mayoría EnterpriseOne de las cargas de trabajo AWS muestran el mejor rendimiento con la compresión de páginas, pero las cargas de trabajo extremadamente grandes (múltiplos de terabytes sin comprimir) pueden funcionar mejor con la compresión de filas. Esta guía no ofrece un análisis detallado de la compresión de páginas en comparación con la compresión de filas. Esta sección se centra principalmente en la compresión de páginas.

Al habilitar la compresión para EnterpriseOne cargas de trabajo normales, se produce un aumento mínimo en el uso de la CPU, pero se obtienen beneficios significativos en el rendimiento general del sistema, que se pueden medir en las siguientes áreas:

  • Menores tamaños de base de datos y requisitos de almacenamiento, ya que los datos se almacenan en el disco en un formato comprimido.

  • Mayor porcentaje de éxito de la memoria caché de búfer, ya que puede almacenar muchos más datos cuando está comprimida.

  • Menor requerimiento de rendimiento y IOPS de Amazon EBS, ya que cada operación de E/S devuelve muchos más datos y se requieren menos operaciones debido a que la memoria caché de búfer es más eficaz.

  • Las copias de seguridad son más rápidas, ya que los datos permanecen comprimidos durante todo el proceso de copia de seguridad.

Puede habilitar la compresión de forma individual por tabla o solo por índice. También puede elegir el tipo de compresión, página o fila, por tabla e índice. Puede resultar ventajoso no comprimir las tablas que se actualizan periódicamente, como las tablas F0002 (Siguiente número) y F0902 (Saldos de cuentas). En muchos casos, permitir la compresión en todas las tablas e índices es la solución más sencilla, ya que proporciona la mayoría de las ventajas sin necesidad de un object-by-object análisis. Los pasos de esta guía comprimirán todas las tablas e índices mediante la compresión de páginas.

En algunas circunstancias, la compresión puede provocar una degradación del rendimiento, en especial cuando los sistemas de terceros acceden directamente a las bases de datos de JD Edwards y realizan operaciones de escaneo de tablas e índices. Esta degradación suele deberse a un bajo rendimiento de las consultas. En estos casos, revise las consultas lentas y utilice técnicas de optimización habituales para mejorar el rendimiento. Por ejemplo, considere reescribir las consultas para utilizar los índices existentes o cree índices nuevos.

Habilite la compresión en un proceso de varios pasos. Muchos de estos pasos requieren el acceso exclusivo a los objetos de la base de datos, lo que significa que tendrá que desconectar otros sistemas. EnterpriseOne Siga estos pasos de alto nivel para habilitar la compresión de páginas en todas las tablas e índices de los esquemas DTA y CTL:

Comprobar el uso del espacio en disco antes de la compresión

Para comprobar el uso actual del espacio en disco de la base de datos, ejecute los siguientes scripts.

USE JDE_PRIST920 SELECT DB_NAME() AS DbName, type_desc, CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS SpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'; SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0) AS TotalSpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'

El resultado debería ser similar al siguiente:

Uso del espacio en disco antes de la compresión.

En este ejemplo, las filas de la tabla ocupan 3407 MB de espacio en disco.

Ejecutar el script de enumeración

Debido al gran volumen de tablas e índices de la EnterpriseOne base de datos, puede utilizar un script para enumerar los objetos que se van a comprimir. El resultado del script de enumeración es el script de compresión que se utiliza en la siguiente sección. Antes de ejecutar el siguiente script, actualice los nombres de los propietarios del esquema para que reflejen los propietarios de las tablas e índices que desee comprimir.

declare @tblname as varchar(100) declare @idxname as varchar(100) declare @schemaname as varchar(100) declare @sqlstatement as varchar(512) declare tblcurs CURSOR for select t.name as tblname, s.name as schemaname from sys.tables t inner join sys.schemas s on t.schema_id = s.schema_id inner join sys.indexes i on i.object_id = t.object_id inner join sys.partitions p on i.object_id = p.object_id AND i.index_id = p.index_id where s.name in ('PS920DTA', 'PS920CTL') and i.type_desc='CLUSTERED' and p.data_compression_desc <> 'PAGE' open tblcurs FETCH next from tblcurs into @tblname, @schemaname while @@FETCH_STATUS = 0 begin FETCH next from tblcurs into @tblname, @schemaname set @sqlstatement = 'alter table ' + @schemaname + '.' + @tblname + ' rebuild with (DATA_COMPRESSION = PAGE)' print @sqlstatement end close tblcurs deallocate tblcurs declare idxcurs CURSOR for select i.name as idxname, t.name as tblname, s.name as schemaname from sys.tables t inner join sys.schemas s on t.schema_id = s.schema_id inner join sys.indexes i on i.object_id = t.object_id inner jOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id where s.name in ('PS920DTA', 'PS920CTL') and p.data_compression_desc <> 'PAGE' and i.type_desc='NONCLUSTERED' and i.name is not null open idxcurs FETCH next from idxcurs into @idxname, @tblname, @schemaname while @@FETCH_STATUS = 0 begin FETCH next from idxcurs into @idxname, @tblname, @schemaname set @sqlstatement = 'alter index ' + @idxname + ' on ' + @schemaname + '.' + @tblname + ' rebuild with (DATA_COMPRESSION = PAGE)' print @sqlstatement end close idxcurs deallocate idxcurs

Ejecutar el script de compresión

Revise el resultado del script de enumeración que ejecutó en la última sección. Puede dividir este script de compresión en scripts más pequeños y ejecutarlos de forma individual y en paralelo.

importante

Asegúrese de que el EnterpriseOne sistema esté desconectado cuando ejecute este script en la base de datos EnterpriseOne .

Este es un ejemplo del script de compresión.

alter table PS920DTA.F07620 rebuild with (DATA_COMPRESSION = PAGE) alter table PS920DTA.F760404A rebuild with (DATA_COMPRESSION = PAGE) alter table PS920DTA.F31B93Z1 rebuild with (DATA_COMPRESSION = PAGE) alter table PS920DTA.F31B65 rebuild with (DATA_COMPRESSION = PAGE) alter table PS920DTA.F47156 rebuild with (DATA_COMPRESSION = PAGE) alter table PS920DTA.F74F210 rebuild with (DATA_COMPRESSION = PAGE) ... alter index F4611_16 on PS920DTA.F4611 rebuild with (DATA_COMPRESSION = PAGE) alter index F4611_17 on PS920DTA.F4611 rebuild with (DATA_COMPRESSION = PAGE) alter index F7000110_PK on PS920DTA.F7000110 rebuild with (DATA_COMPRESSION = PAGE) alter index F7000110_3 on PS920DTA.F7000110 rebuild with (DATA_COMPRESSION = PAGE) alter index F7000110_4 on PS920DTA.F7000110 rebuild with (DATA_COMPRESSION = PAGE) alter index F76A801T_PK on PS920DTA.F76A801T rebuild with (DATA_COMPRESSION = PAGE) ...

Comprobar el uso del espacio en disco después de la compresión

Para comprobar el uso actual del espacio en disco de la base de datos, ejecute el siguiente script.

USE JDE_PRIST920 SELECT DB_NAME() AS DbName, type_desc, CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS SpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'; SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0) AS TotalSpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'

El resultado debería ser similar al siguiente.

Utilización del espacio en disco después de la compresión

En este ejemplo, puede ver que el espacio utilizado se redujo de 3407 MB a 1275 MB, lo que representa un ahorro del 62 por ciento gracias a la compresión. El ahorro de la base de datos variará en función de cómo se distribuyan los datos entre las tablas de la base de datos.