sábado, 6 de outubro de 2012

Dispositivos de I/O no Oracle


Em sistemas operacionais Unix ou Linux as operações de leitura e escrita (Input/Output) geralmente passam pelo cache do sistema operacional destinado a gerenciar os arquivos no servidor. Embora isso não represente um problema em si, este processamento extra, consome recursos do servidor.

Sobre os dispositivos de I/O.

Asynchronous I/O - é uma forma de processamento de leitura e gravação (I/O) que permite que o processamento continue antes da operação ter sido concluída.

Os dispositivos de I/O em um servidor podem ser extremamente lentos em comparação com o tratamento de dados. Este dispositivo pode ser compostos por componentes mecânicos, que se movem fisicamente, em um disco rígido à procura de um caminho para ler ou escrever, o que é muitas vezes mais lento do que uma mudança de corrente elétrica.

Direct I/O - é uma forma de processamento para ler ou gravar os arquivos de sistema que ignora o sistema operacional, acessando diretamente o cache do sistema. Este processamento economiza memória e aumenta o desempenho de aplicações de banco de dados. Também evita problemas de desempenho associados à utilização de tamanhos de banco de dados de bloco que não correspondem ao tamanho do arquivo de buffer do sistema.

Portanto se ignorarmos o cache do sistema de arquivos reduziremos os requisitos de CPU e liberaremos o cache do sistema de arquivos para outras operações de banco de dados, não relacionadas a I/O. Operações que possuem dispositivos como “raw devices” podem ignorar o cache do sistema de arquivos, esse dispositivo pode ser encontrado nas estruturas do ASM (Automatic Storage Management).

Onde o gerenciamento de I/O é realizado diretamente pelo banco de dados.

Vamos a um exemplo.

Quando um pedido de leitura (I/O) síncrono é apresentado ao sistema operacional, os processos de escrita dos blocos devem ser concluídos, para que depois o sistema possa continuar o processamento. Com o processamento assíncrono de I/O, o processamento continua, enquanto um novo pedido de I/O é apresentado e processado. Isso permite que o banco de dados contorne alguns gargalos associados ao desempenho de leitura e escrita.

O banco de dados Oracle pode aproveitar o acesso direto e o acesso assíncrono de I/O em algumas plataformas (Linux e Unix). Para tanto é necessário configurar o parâmetro FILESYSTEMIO_OPTIONS, cujas as opções estão listadas abaixo.


§  ASYNCH – Habilita o dispositivo de I/O assíncrono quando possível.

§  DIRECTIO – Habilita o dispositivo de I/O direto quando possível.

§  SETALL- Habilita os dois dispositivos de I/O, o direto e o assíncrono quando possível.

§  NONE – Desabilita os dois dispositivos de I/O.


O exemplo a abaixo mostra como o parâmetro é definido.

SQL> SHOW PARAMETER FILESYSTEMIO_OPTIONS

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------------
filesystemio_options                 string      none

SQL> ALTER SYSTEM SET FILESYSTEMIO_OPTIONS=SETALL SCOPE=SPFILE;

System altered.

SQL> SHUTDOWN IMMEDIATE

Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> STARTUP

ORACLE instance started.

Total System Global Area  926941184 bytes
Fixed Size                  1222672 bytes
Variable Size             239077360 bytes
Database Buffers          683671552 bytes
Redo Buffers                2969600 bytes

Database mounted.
Database opened.

SQL> SHOW PARAMETER FILESYSTEMIO_OPTIONS

NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------------------------
filesystemio_options                 string      SETALL






MSc. Rubens Oliveira
DBA Oracle Consultor
olivert.dba@consultant.com