Problemas "com" mySQL
b0as,
É o seguinte, estou a trabalhar num interface web para a ENSP (Escola Nacional de Saúde Pública) e isto quando toca a saúde imagina-se logo muitos registos. Por isso encontro-me com um ligeiro problema na base de dados, existem 330 campos e pretendem que se possa inserir 150 mil registos para posteriormente pesquisar-se, no entanto, isto demora séculos a inserir, talvez uns 40 a 50 minutos (estou a faze-lo pelo método "load data local infile", que segundo a documentação de mySQL é 20x mais rápida que pelo método "INSERT", mas não foi por esse motivo que escolhi este método). Já mudei o ficheiro de parâmetros do mySQL (my-huge.ini) para "my.ini" no sentido de fazer query's mais rápidos, e estou agora a tentar perceber o "INDEX".
Um query de 7 colunas e 54564 registos demora sensivelmente 1 min. (mais coisa menos coisa), acham isto normal? Alguém me pode ajudar neste problema? Já tentei ver de tudo e continuar com um tempo de resposta um bocado elevado, eu acho.
Fikem bem,
[[[]]]
- Clique Iniciar Sessão ou registar-se para colocar comentários
- 702 leituras






Comentários
a tua opção....
são mesmo os indexes ... a documentação de pgsql nesse campo está boa... se não resultar nos docs de mysql, tenta os do companheiro.
1x40 minutos
Demora 40 minutos, mas isso não acontece só uma vez?
Bem já resolvi o meu
Bem já resolvi o meu problema, penso eu de que ...
Bastou-me inserir "NOT NULL" em cada campo da tabela e ficou bem mais leve. Agora demora cerca de 1/2 minutos (a apontar mais para 1 min.). A nivel de pesquisa, leva cerca de 30 seg. em 25,000 registos com 7 campos e a pesquisar praticamente 60,000 registos dá talvez uns 20 segundos.
Será que é muito tempo de espera? (Reparem que também estou a usar um portátil: AMD Turion MK-36 com 1Gb de RAM)
--- Código ---
echo '';
# Aqui vaí buscar os nomes dos campos
for( $i = 0 ; $i < count($title) ; $i++ ){
echo '' . $title[$i] . '';
}
echo '';
# Aqui vai buscar os dados respectivos aos campos
while($row = @mysql_fetch_row($res)){
echo '';
foreach($row as $value){
echo '' . $value . '' . "\n";
}
echo '';
}
echo '';
--------------
Agora, será que estou a usar o código mais correcto? Este código fui eu que o fiz, logo não sei até que ponto estará bom, mas pelo que tenho visto e comparado, parece-me muito semelhante aos documentados.
Fikem bem,
[[[]]]
Nota: Os "echo's" que estão em "branco" referem-se a uma tabela.
E não, não era apenas uma
E não, não era apenas uma vez, era sempre que tentava ir buscar algum tipo de informação à base de dados ou inserir (o mais doloroso era a inserir).
E quanto à explicação de ter posto "NOT NULL" em todos os campos é que um campo que aceite "NULL" fica com + 1 bit.. Agora.. penso que não seja por 330 bit's que faz a diferença, mas que resultou, isso resultou!
Não demoro nem 2 minutos a inserir 150,000 registos na base de dados! :)
E as pesquisas bastante mais leves.. eheh
Fikem bem,
[[[]]]
Nota: Mais comentários são aceites: optimizações, design da tabela, uso de índices, notas de programação, etc.
As estruturas de dados são
As estruturas de dados são realmente muito importantes. Mas para uma boa normalização/design de uma BD é necessário conhecer bem o problema.
Compiladores à muitos, já dizia o gajo do C e do Unix, as estruturas de dados é que importam. Era algo do género...
--
"No ínicio não havia nada e Ele disse: apt-get install light"
Agora que optimizaste a
Agora que optimizaste a estrutura de dados, arranja uma maquima com bons tempos de acesso ao disco e que tenha algum tipo de redundancia a esse nivel, tipo RAID...
have fun (you're obviously on that route, hehehe)
::-------------------------------------
"Knowledge is power, wisdom is the way. Learn something new every day!"
b0as novamente,
b0as novamente,
Estive a fazer uns testes ao site que estou a elaborar e reparei que:
- Firefox (FF) com 81846 registos e 7 colunas demora 83.900s / 103.304s / 20.694s
- Internet Explorer (IE) com os mesmos registos e colunas demora 5.513s / 3.375s / 3.840s
Os dados são mostrados através de uma tabela.
Agora pergunto, porque é que o FF demora mais tempo que o IE? Será devido ao IE nem interpretar as tags (e nem lhe interessa muitas vezes se são fechadas ou não) e o FF interpreta?
Fikem bem,
[[[]]]
PS: Foram feitos pelos menos 2 experiências intercaladas em cada browser. E os programas abertos ou em utilização são os mesmos (até a nivel de consumo de memória dos 2 browsers).
O Windows e o IE são um
O Windows e o IE são um só.
Porque não testas
... firefox, epiphany e o browser do kde ... como se chama a coisa?
ambos em gnome, em xfce e em kde. Depois diz qual deitas fora e porquê. A resposta aqui parece-me (a mim mais obvia).
Vou apenas dizer que em relação ao FF vs Epiphany, o epiphany "apenas" usa o rendering (se estiver a dizer uma calinada) do FF, equanto tudo o resto é embebido no sistema que usas (gnome). Quanto ao firefox, e ainda por mais sendo cross platform, tem que implementar tudo por si só, não podendo depender de terceiros, aumentando o seu footprint :P
Não faço ideia se está
Não faço ideia se está relacionado, mas recordo-me de em tempos termos de definir limites nas tabelas para que fossem carregadas em tempo util pelo IE. Ao contrario do que acontecia com os browsers baseados no gecko.
just a thought
::-------------------------------------
"Knowledge is power, wisdom is the way. Learn something new every day!"