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.
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