As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configurar a compactação de dados
É possível compactar as tabelas e os índices nos dados comerciais do EnterpriseOne e controlar tabelas via compactação de páginas ou linhas. A maioria das workloads do EnterpriseOne na AWS apresentam a melhor performance com a compactação de páginas, mas workloads extremamente grandes (múltiplos de terabytes não compactados) podem ter uma performance melhor com a compactação de linhas. Uma discussão detalhada sobre a compactação de páginas versus de linhas está além do escopo deste guia. Esta seção concentra-se principalmente na compactação de páginas.
Quando a compactação é habilitada para workloads normais do EnterpriseOne, há um aumento mínimo no uso da CPU, mas os benefícios na performance geral do sistema são significativos e podem ser medidos nas seguintes áreas:
-
Tamanhos de banco de dados e requisitos de armazenamento menores, pois os dados são armazenados em disco em um formato compactado.
-
Maior taxa de acertos do cache do buffer, já que o cache do buffer pode acomodar muito mais dados quando é compactado.
-
Throughput e IOPS menores exigidas pelo Amazon EBS, pois cada operação de E/S retorna muito mais dados e menos operações são necessárias porque o cache do buffer é mais eficiente.
-
Backups mais rápidos, pois os dados permanecem compactados durante todo o processo de backup.
É possível habilitar a compactação individualmente por tabela ou apenas por índice. Você também pode escolher o tipo de compactação, página ou linha, por tabela e índice. Talvez seja vantajoso não compactar tabelas que são atualizadas regularmente, como as tabelas F0002 (Próximo número) e F0902 (Saldos de contas). Em muitas circunstâncias, habilitar a compactação em todas as tabelas e índices fornece a solução mais fácil, pois oferece a maioria dos benefícios sem exigir uma análise objeto por objeto. As etapas deste guia compactarão todas as tabelas e índices com a compactação de página.
Em algumas circunstâncias, a compactação pode causar degradação de performance, especialmente quando sistemas de terceiros acessam diretamente os bancos de dados do JD Edwards e realizam operações de varredura de tabelas e índices. Essa degradação geralmente é causada por consultas de baixa performance. Nesses casos, analise as consultas lentas e use técnicas comuns de otimização para melhorar sua performance. Por exemplo, considere reescrever as consultas para usar índices existentes ou criar novos índices.
Habilitar a compactação é um processo de várias etapas. Muitas dessas etapas exigem acesso exclusivo aos objetos do banco de dados, o que significa que seria necessário colocar o EnterpriseOne e outros sistemas offline. Siga estas etapas de alto nível para ativar a compactação de páginas em todas as tabelas e índices nos esquemas DTA e CTL:
Verificar a utilização do espaço em disco antes da compactação
Para verificar a utilização atual do espaço em disco do banco de dados, execute os scripts a seguir.
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'
A saída deve ser semelhante à seguinte:
Neste exemplo, as linhas da tabela ocupam 3.407 MB de espaço em disco.
Executar o script de enumeração
Devido ao grande volume de tabelas e índices no banco de dados do EnterpriseOne, é possível usar um script para enumerar os objetos a serem compactados. A saída do script de enumeração é o script de compactação usado na próxima seção. Antes de executar o script a seguir, atualize os nomes dos proprietários do esquema para refletir os proprietários das tabelas e índices que deseja compactar.
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
Executar o script de compactação
Revise a saída do script de enumeração executado na última seção. Você pode dividir esse script de compactação em scripts menores e executá-los individualmente e em paralelo.
Importante
Certifique-se de que o sistema EnterpriseOne esteja offline ao executar esse script no banco de dados do EnterpriseOne.
Aqui está um exemplo do script de compressão.
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) ...
Verificar a utilização do espaço em disco após a compactação
Para verificar a utilização atual do espaço em disco do banco de dados após a compactação, execute o script a seguir.
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'
A saída deve ser semelhante a esta.
Neste exemplo, é possível ver que o espaço usado caiu de 3.407 MB para 1.275 MB, o que representa uma economia de 62% gerada pela compactação. A economia para seu banco de dados variará de acordo com a forma como os dados estão distribuídos entre as tabelas no banco de dados.