Recomendações para carga de dados

Versão para impressãoEnviar para amigoVersão PDF
  • Sempre que possível, trabalhe com RAW devices, o I/O fica bem mais rápido , porém no linux para isso é necessário ter kernel >2.6
  • Uma alternativa ao RAW device é trabalhar com DIRECT_IO.
  • Se estiver em ambiente HP-UX e esteja utilizando RAW devices, tenha certeza de ter a variavel KAIOON=1, caso contrário o KAIO não será utilizado.
  • Se estiver trabalhando com a versão 11.50 xC6 ou superior, de preferência para o EXTERNAL TABLES, se sua versão for inferior vá para o HPL para fazer a carga, Ambos são as ferramentas de cargas de dados mais rápidas existentes.
    Normalmente faço alguns shells para converter um dbimport para HPL / EXTERNAL TABLES.
    Se não for possivel "converter" todo o dbimport para HPL tente com as tabelas maiores, removendo estas tabelas do script do dbimport , assim você pelo menos irá ganhar tempo nelas.
  • Ao utilizar o dbimport, confira no script [banco].sql :
    • Está criando indices clusterizados, se sim, remova a opção CLUSTER
      Avalie se esta sugestão é valida para todos os casos, pode ocorrer casos em que seja melhor manter a opção.
    • No final existe a execução do update statistics, remova do script e faça a atualização de estatisticas depois seguindo o padrão que você já trabalha.
      Pessoalmente acho ineficiente os comandos de UPDATE STATISTICS gerado pelo "dbexport" . Digo ineficiente porque por experiência, comigo, muitas vezes foi mais rápido gerar através dos comandos que eu já trabalhava.
      Observação: Lembre que apartir da versão 11.10 as estatistics de indice são criadas automaticamente no CREATE INDEX.
    • Remova todas as criações de indices, salve em outro arquivo SQL para executar após a carga do dbimport
  • Reconfigure o Informix:
    • Aloque o máximo de memória possivel da maquina, temporariamente, apenas para o processo de importação (cuidado para não utilizar o SWAP).
    • 50%/50% de buffers e shared memory
    • Defina LRU_MAX_DIRTY/MIN = 90/1 , assim o checkpoint será mais longo, porém mais eficiente.
      Mas faça isso apenas se não estiver utilizado o AUTO_LRU_TUNNING
    • Se estiver utilizando chunks em file system (cooked file), defina pelo menos 2 AIO vps para cada chunk. se estiver utilizando raw devices (KAIO), 4 AIO vps no total está de bom tamanho.
      Mas faça isso apenas se não estiver utilizado o AUTO_IOVPS
    • Se estiver utilizando file system com journaling (ext3, ext4, raiser, jfs, hfs, etc), estude a possibilidade de refazer e trabalhar em um que não utilize journaling (ext2).
    • Aumente seu PHYSBUFF e LOGBUFF para um valor mais alto, pelo menos 1024 (1MB)
    • Defina o MAX_PDQPRIORITY =100
      DS_TOTAL_MEMORY = <valor do SHMVIRTSIZE>
      DS_MAX_SCANS = <qtde de discos fisicos utilizado>
    • Utilizar conexão de shared memory: NETTYPE ipcshm
      Caso tenha problema com este tipo de conexão, configure uma TCP pelo loopback da maquina.
  • Para a criação dos indices posterior ao dbimport/HPL execute o comando set PDQPRIORITY 100 no mesmo script dos indices ou defina a variável de ambiente: export PDQPRIORITY=100
  • Defina LTAPEDEV e TAPEDEV para /dev/null para não gerar backup desnecessário da carga
  • Tenha certeza de que o banco não esta com log ativo durante a carga e criação dos indices
    Para remover o log utilizar algum dos dois comandos:
     $ ontape -s -L 0 -N <banco>
     $ ondblog nolog <banco>
    

  • Se possível não deixe que os arquivos do dbimport estejam no mesmo disco (fisico) que os chunks do banco, para não concorrer no I/O.
    Se seu servidor tiver bastante memória, reserve uma parte para um file system do tipo TMPFS e copie seus UNLs para ele, assim o acesso será muito rápido.
    Se não tiver outro disco, não tiver memória de sobra para utilizar o TMPFS e o ambiente de rede tiver boa performance, coloque os arquivos de carga em outra maquina, mapeie o acesso utilizando NFS ou SAMBA/CIFS e inicie a carga.
    Em certos casos isto pode não ser tão performático porque a tranferencia da rede consome CPU pelo daemon do NFS,SAMBA/CIFS. No fim pode ser que ele mais atrapalhe do que ajude.
  • Tenha certeza de que possui dbspaces temporários criados e configurados no onconfig: DBSPACETEMP.
    Eles farão diferença na criação dos indices.
    Para garantir a boa performance, faça com que a soma do tamanho de todos os dbspaces temporários seja superior que o tamanho do maior indice a ser criado.
  • Se utilizado conexão TCP ou IPC PIPE, configure a váriavel FET_BUF_SIZE para um valor alto na mesma sessão que irá executar o comando de carga.
0
Ainda não votado
Sua avaliação: Nenhum

Comentar

O conteúdo deste campo é privado não será exibido ao público.
  • Endereços de páginas de internet e emails viram links automaticamente.
  • Você pode usar tags BBCode no texto.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>

Mais informações sobre as opções de formatação

CAPTCHA
Este teste é para bloquear programas automatizados e previnir spams
CAPTCHA de Imagem
Digite o texto exibido na imagem.