Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia amigos, tudo bem?
Bom é o seguinte, estou construindo um sistema,
e estou com algumas dúvidas sobre o SQL.
O firebird, pelo que pude ver, salva arquivos de extensão .GDB por exemplo
o que torna extremamente fácil fazer a instalação do banco de dados, tendo em vista
que os dados já prontos ficam neste arquivo.
Minha dúvida é a seguinte:
Estou utilizando MYSQL no meu sistema, e a versão
inicial do sistema já irá com algumas tabelas preenchidas
como por exemplo a tabela de LOGRADOUROS, BAIRROS e etc relacionadas a endereço
que contém os seguintes numeros de informações:
Bairros: 38,777
cidades: 10,053
LOGRADOUROS: 709,440
uf: 27
Eu baixei esta base na internet com uns comandos de INSERT em suas respectivas tabelas.
O problema é que é EXTREMAMENTE LENTO incluir estes dados na base de dados via NAVICAT, HeidiSql etc...
E aí me surgiu a seguinte dúvida:
Meu computador não é tão ruim assim.
Toda vez que eu for implantar o sistema em um cliente novo eu vou ter que rodar esses INSERTS iniciais?
Não tem como levar só um arquivo .frm por exemplo q vi aqui que são os casos do MYSQL?
Existe algum modo de importar esses dados mais rapido?
Afinal são quase 1 milhão de dados...
Tem como usar algumas técnicas para esta carga ser mais veloz...
Qual tipo de tabela (MyISAM ou InnoDB) esta usando?
Exemplos: LOCK e LOAD_DATA_INFILE
>
Tem como usar algumas técnicas para esta carga ser mais veloz...
Qual tipo de tabela (MyISAM ou InnoDB) esta usando?
Exemplos: LOCK e LOAD_DATA_INFILE
Então cara, o que fica melhor? MyISAM ou InnoDB ?
Posso mudar aqui, estou começando agora.
Não sei qual estou utilizado mas provavelmente é InnoDB.
O que é Lock e LOAD_DATA_INFILE ???
LOCK é uma técnica utilizada para previnir inconsistências, isolar uma tabela ou registro até que a operação seja concluída, porém, quando a tabela esta em estado de LOCK, os processos são realizados mais rapidamente, propício para carga de grande volume de dados em tabelas MyISAM. http://dev.mysql.com/doc/refman/5.0/en/optimizing-myisam-bulk-data-loading.html
Você pode desabilitar algumas verificações para realização da carga em tabelas InnoDB. http://dev.mysql.com/doc/refman/5.0/en/optimizing-innodb-bulk-data-loading.html
LOAD_DATA_INFILE é um comando interno do MySQL para carga de arquivos. http://dev.mysql.com/doc/refman/5.0/en/load-data.html
MyISAM é mais rápido que InnoDB, você pode criar seu banco de dados, todas as tabelas como MyISAM, carregar os dados, depois rodar um script para alterar o motor das tabelas e criar as chaves estrangeiras (uma das limitações do MyISAM é a impossibilidade de criar relação de integridade).
Repare que algumas técnicas são compatíveis, ou seja, você pode aplicar 2 técnicas para fazer a carga mais rápido. Mas outras técnicas não são compatíveis, ou você aplica 1 ou a outra.
se for myisam copiar a pasta da tabela com os dados funciona perfeitamente. Soh nao eh recomendavel.
>
Toda vez que eu for implantar o sistema em um cliente novo eu vou ter que rodar esses INSERTS iniciais?
Não tem como levar só um arquivo .frm por exemplo q vi aqui que são os casos do MYSQL?
Nunca tentei "importar" um bd por meio de arquivos. Mas imagino que possa haver problemas de fazer isso entre máquinas de arquiteturas diferentes. Por exemplo, o tamanho de um campo INT em arquitetura de 32 bits é diferente do tamanho de um campo INT em uma máquina 64 bits
>
Existe algum modo de importar esses dados mais rapido?
Afinal são quase 1 milhão de dados...
nunca usei nenhum dos dois programas que citou, mas já tentou fazer isso pela linha de comando? é direto no mysql. capaz que seja mais rápido :)