Pular para o conteúdo principal

Buffer de Log - Estruturas de Memória no Oracle


#22

O Buffer de Log é uma importante área da estrutura de memória do Oracle, ela é responsável por armazena os dados quase em tempo real e desta forma evita a perda de dados se houver uma falha no banco de dados.

O Buffer de log é uma área de preparação pequena e de curto prazo que armazena os vetores de alteração antes que eles sejam gravados nos arquivos de Redo Log no disco. Sempre que é executado uma instrução DML (Insert, Delete, Update) é gerado vetores de alteração aplicados aos dados, na sessão do usuário esses vetores ficam armazenado no Cache de Buffer do Banco de Dados e essas informações não são gravadas em tempo real no disco, pois, se fossem a sessão do usuário teria que esperar a resposta de cada I/O o que iria gerar uma grande queda de desempenho, então a sessão do usuário grava os vetores de alteração diretamente na memória do buffer de log, isso é muito mais rápido do que gravar no disco. O Buffer de Log é então gravado nos arquivos de Redo Log, de onde são extraidos e aplicados aos backups de arquivos de dados, se for necessário restaurar um arquivo de dados.

O processo de gravação nos arquivos de Redo Log é um processo independente e trabalha em segundo plano e o LGWR é o processo responsável pela gravação. O Buffer de Log é de uso global, isso quer dizer que os vetores de alteração de todas as sessões dos usuários são gravadas na memória de forma intercalada. A gravação do Buffer de Log no disco pode ser de um lote contendo muitos vetores de alteração provenientes de muitas transações de vários usuários diferentes, e mesmo assim, essas gravações do Buffer Log em disco ocorre quase em tempo real, e quando uma sessão de usuário executa uma instrução COMMIT essa gravação do Buffer de Log em disco ocorre em tempo real, sendo que a sessão que executou o COMMIT fica suspensa até a finalização e confirmação do processo de gravação do Redo Log em disco. O processamento da instrução COMMIT é uma parte crítica da arquitetura da Oracle.

Em comparação com outras estruturas de memória do Oracle o Buffer de Log é pequeno, e deve ser mesmo, pois é um espaço de memória de curto prazo e precisa de apenas alguns megabytes de espaço, o tamanho padrão definido pelo Oracle leva em consideração o número de CPU's do servidor. Disponibilizar um espaço de memória muito maior que o padrão pode afetar seriamente o desempenho e também não é possível configurar um tamanho menor que o padrão, se isso ocorrer esse valor será descartado e será usado o valor padrão. O Buffer de Log é alocado na inicialização da instância e não pode ser redimensionado sem reiniciar a instância.

O Buffer de Log trabalha de forma circular, isso que dizer que a cada vez que o LGWR grava os dados em disco o espaço que estava sendo usado torna-se disponível e pode ser sobrescrito por outros vetores de alteração. Não é possível realizar DML mais rápido do que o processo de LGWR, desta forma, pode ocorrer que em tempos de pico de atividade os vetores de alteração sejam gerados mais rápidos que do que o processo de LGWR podem gravalos em disco, se isso ocorrer, todas as atividades de DML cessará por alguns milessegundos enquando o LGWR limpa o buffer.

A vantagem do RAC é que cada intância possui seu próprio Buffer de Log e seu próprio LGWR, desta forma o uso do RAC é indicado quando a gravação do Redo de Log for a parte limitante em um desempenho de banco de dados.

Se tiverem dúvidas realizem um INSERT nos comentários e depois dê um COMMIT que depois respondo.

Abraço e bons estudos.

Comentários

Postagens mais visitadas deste blog

Conhecendo a arquitetura do Banco de Dados Oracle

#15 Vamos focar mais no ambiente de banco de dados mais comum, que é uma instância em um computador, abrindo um banco de dados armazenado em discos locais. Sempre que for mensionado instância, esta se referindo ao banco de dados em funcionamento. Um banco Oracle é composto por duas estruturas, uma lógica e uma física. A estrutura lógica é chamada de instância e composta por estruturas de memória e processos, a sua existência é temporária na memória RAM e CPU e fica ativa enquanto o banco Oracle estiver ligado, se desligar o banco Oracle toda a informação ou vestígios de sua existência será apagado da memória, ao ligar o banco Oracle a instância é carregada novamente na memória. Os processos que compõem a instância trabalham em segundo plano e fica ativo o tempo todo enquanto a instância estiver ativa. A estrutura física é onde fica armazenado as informações, e uma vez criado, ele existe até que o DBA deliberadamente decida exclui-lo. Quando um banco Oracle é iniciado, na me...

O Cache de Buffer do Banco de dados - Estruturas de Memória no Oracle

#21 Vamos conhecer um pouco mais sobre o Cache de Buffer de Dados. O Cache de Buffer de Dados é o local de trabalho do Oracle, é nessa área que ele executa as SQLs. A função dessa área é otimizar e melhorar o desempenho das instruções DML. O maior gargalo de um banco de dados é o I/O dos arquivos em disco. Mas antes de explicar como funciona o Cache de Buffer de Banco de dados, vamos entender rápidamente o que é bloco, desta forma você não fica perdido, os arquivos de dados que contém os registros que são as linhas da tabela, indices e outros objetos de dados são formatados em blocos de tamanho fixo, o DBA pode definir um tamanho para esses blocos ou deixar de forma automática. A quantidade de linhas por bloco é indefinida, pois, as linhas possuem comprimento variável, o comprimento desta linha dependerá do número de colunas e os tipos de informações definidos para a tabela. De acordo com tamanho das linhas, pode haver várias linhas por bloco ou uma linha pode se estender por vár...

Shared Pool - Estruturas de Memória no Oracle

#23 O Shared Pool é considerada umas das estruturas de memórias mais complexas da SGA, ela é dividida em dezenas de subestruturas e todas são gerenciadas internamente pelo Oracle. Mas nesse momento vamos citar apenas os 4 principais componentes desta estrutura, as demais serão analizadas posteriormente. Quando uma aplicação executa uma DML, vários processos internos no Oracle são realizados até o retorno do resultado para o usuário. E esses 4 componentes tem participação direta na execução da DML e com isso gerando um bom desempenho do banco de dados. Os 4 principais componentes são: - O Cache de Biblioteca - O Cache de Dicionário de Dados - A Área PL/SQL - O Cache de Resultados de Funções PL/SQL e Consultas SQL Agora, vamos conhecer um pouco mais de cada um. - O Cache de Biblioteca (library cache) Todas instruções DML enviadas pela aplicação devem ser analizadas pelo Oracle. Quem realiza essa análise é o parse, o parse converte o código escrito pelos progra...