Hi
<b>Buffering de tabelas</b>
Vantagens do buffering
Conceito de buffering
Tipos de buffering
Sincronização de buffers
<b>Acesso a banco de dados utilizando o conceito de Buffer</b>
O buffering permite acessar os dados mais rapidamente, permitindo
o acesso a partir do servidor de aplicativos em vez do banco de dados.
<b>Vantagens do buffering</b>
O buffering de tabelas aumenta o desempenho ao ler os registros da tabela.
Ao ler os registros de uma tabela bufferizada diretamente do buffer local do servidor de aplicativos em que a transação de acesso está sendo executada, o tempo necessário para acessar os dados é consideravelmente reduzido. O acesso melhora em um fator de 10 a 100, dependendo da estrutura da tabela e da configuração exata do sistema.
Se os requisitos de armazenamento no buffer aumentarem devido a mais dados, os dados que não foram acessados por mais tempo são deslocados. Esse deslocamento é feito de forma assíncrona em momentos específicos definidos dinamicamente com base nos acessos ao buffer. Os dados são deslocados apenas se o espaço livre no buffer for menor que um valor predefinido ou a qualidade do acesso não for satisfatória naquele momento.
Digitar $TAB no campo de comando redefine os buffers da tabela no servidor de aplicativos correspondente. Use esse comando apenas se houver inconsistências no buffer. Em sistemas grandes, pode levar várias horas para preencher os buffers. O desempenho é consideravelmente reduzido durante esse tempo.
<b>Conceito de buffering</b>
O Sistema R/3 gerencia e sincroniza os buffers nos servidores de aplicativos individuais. Se um programa de aplicação acessar os dados de uma tabela, a interface de banco de dados determina se esses dados estão no buffer do servidor de aplicativos. Se estiverem, os dados são lidos diretamente do buffer. Se os dados não estiverem no buffer do servidor de aplicativos, são lidos do banco de dados e carregados no buffer. Portanto, o buffer pode atender ao próximo acesso a esses dados.
O tipo de buffering determina quais registros da tabela são carregados no buffer do servidor de aplicativos quando um registro da tabela é acessado. Existem três tipos diferentes de buffering.
Com o buffering completo, todos os registros da tabela são carregados no buffer quando um registro da tabela é acessado.
Com o buffering genérico, todos os registros cuja parte esquerda da chave é a mesma são carregados no buffer quando um registro da tabela é acessado.
Com o buffering de um único registro, apenas o registro acessado é carregado no buffer.
<b>Tipos de buffering</b>
Com o buffering completo, a tabela está totalmente ou não está no buffer. Quando um registro da tabela é acessado, todos os registros da tabela são carregados no buffer.
Ao decidir se uma tabela deve ser totalmente bufferizada, o tamanho da tabela, o número de acessos de leitura e o número de acessos de escrita devem ser considerados. Quanto menor a tabela, mais frequentemente ela é lida e menos frequentemente ela é gravada, melhor será bufferizar completamente a tabela.
Também é aconselhável o buffering completo para tabelas com acessos frequentes a registros que não existem. Como todos os registros da tabela residem no buffer, já está claro no buffer se um registro existe ou não.
Os registros de dados são armazenados no buffer ordenados pela chave da tabela. Ao acessar os dados com SELECT, apenas os campos até o último campo de chave especificado para o acesso podem ser utilizados. Portanto, a parte esquerda da chave deve ser o mais ampla possível para esses acessos. Por exemplo, se o primeiro campo da chave não estiver definido, toda a tabela será escaneada no buffer. Nessas circunstâncias, um acesso direto ao banco de dados pode ser mais eficiente se houver um índice secundário adequado lá.
Com o buffering genérico, todos os registros cujos campos genéricos de chave coincidem com esse registro são carregados no buffer quando um registro da tabela é acessado. A chave genérica é uma parte esquerda da chave principal da tabela que deve ser definida ao selecionar o tipo de buffering. A chave genérica deve ser selecionada de forma que as áreas genéricas não sejam muito pequenas, o que resultaria em muitas áreas genéricas. Se houver apenas alguns registros para cada área genérica, geralmente é preferível o buffering completo para a tabela. Se você escolher uma chave genérica muito grande, muitos dados serão invalidados se houver alterações nas entradas da tabela, o que terá um efeito negativo no desempenho.
Uma tabela deve ser bufferizada genericamente se apenas determinadas áreas genéricas da tabela forem necessárias para o processamento.
As tabelas totalmente bufferizadas dependentes do cliente são bufferizadas automaticamente.