Parâmetro MBRC

E ai rapaziada, tudo belezinha? Pois é hoje posto sobre o parâmetro de banco de dados db_file_multiblock_read_count. Este parâmetro é responsável por dizer ao Oracle qual a capacidade máxima de leitura de blocos que o SGBD consegue efetuar, o Optimizer também utiliza este parâmetro para estimar o custo de I/O. Se o valor em um banco for de 128 – que é o padrão nos bancos de dados com 8K -, o Oracle consegue ler 128 blocos de uma única vez e sendo a blocagem do banco de 8K, isso significa que a engine irá conseguir ler 1MB de uma única vez.

Esse parâmetro, também é conhecido através da sigla MBRC e normalmente sofre mais alteração em ambientes DW/DSS, visando a redução na quantidade de I/Os nestes ambientes. Outro fator favorável para alteração do parâmetro nestes ambientes é que normalmente são executados full scans nos índices e/ou tabelas, este tipo de acesso utiliza leitura de múltiplos blocos, sendo assim, se o valor for menor, uma maior quantidade de I/O será efetuada.

Isso não quer dizer que não nos interessa saber qual o valor deste parâmetro em ambientes OLTPs. Como ponto de atenção, entenda que se uma tabela conter dados que totalizem uma quantidade de blocos inferior ao valor do MBRC, queries sempre acessarão com full scan esta tabela (quando a decisão de escolha do plano for baseada em custo pelo Optimizer), mesmo que você crie índices nesta estrutura.

De acordo com a documentação da Oracle (Doc ID 1398860.1), este parâmetro é automaticamente cálculado pelo SGBD. Porém há casos em que há a necessidade de “tunar” o mesmo, e para isso a fórmula utilizada está descrita abaixo:

db_file_multiblock_read_count = min(max I/O size/db_block_size , db_cache_size/(sessions * db_block_size))

Uma boa prática também, quando utilizando ASM, é combinar o tamanho máximo de I/O do sistema operacional com o tamanho da unidade de alocação do diskgroup utilizado ou que ao menos seja um múltiplo deste. Exemplo, AU de 4MB em OS que suporta 4MB de I/O. O Oracle Linux 5 suporta I/O de até 4MB, porém a versão 6 deste produto pode chegar até 32MB.

Por hoje é só galera. Aquele abraaaaaaaa.

2 thoughts on “Parâmetro MBRC

  1. Grande Carlão!

    Sempre vindo com informações mirabolantes do nosso database favorito de tela preta rs.

    Aproveitando o clima, seria possível ter alguma vantagem no alinhamento deste parâmetro com o strip size dos RAIDs aplicados nos discos?Por exemplo, levando em consideração seu primeiro exemplo de leitura de 1MB, se eu colocar meu bloco de RAID em 1 MB também eu teria o acesso a estes discos otimizado?

    Abraços meu brother!

    • Exatamente, Igão! Quando alinhamos este parâmetro com o tamanho do stripe utilizado pelo RAID, teremos sim acesso otimizado aos dicos. É justamente por isso que, em ambientes que utilizam ASM, a unidade de alocação (Allocation Unit) deve estar alinhado com esse valor, já que o tamanho do strip será igual ao tamanho do AU.

      Abraços, meu amigo que arrasta mouse! =]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s