MySQL - velocidade de escrita

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

MySQL - velocidade de escrita

Mensagempor jsa » Quinta Mar 15, 2007 16:26

Óla a todos.

Estou a utilizar uma base de dados MySQL e estou com um problema.
Pretendo inserir dados numa tabela a uma velocidade mais elevada.
Existem algumas alterações que possa fazer na BD que permitam isso??

Abraço,

JSa
jsa
Novato
Novato
 
Mensagens: 4
Registado: Quinta Mar 15, 2007 16:21

Mensagempor alfatek » Quinta Mar 15, 2007 16:34

Vivas,

Há imensas optimizações que podes testar para permitir velocidades superiores de inserção. Mas todas as optimizações dependem muito do contexto concreto do problema: versões do mysql, caracteristicas do servidor, caracteristicas do tipo de dados, etc,etc,etc...


Mas normalmente o que se procura optimizar são as operações do tipo SELECT/UPDATE. Habitualmente nos INSERT não há muita optimização a ser feita, depende mais da velocidade da rede, do disco, do tipo de base de dados que escolhes.

A única coisa que estou a ver que podes optimizar é a questão dos indices. Se muitas das colunas tiverem indices a inserção vai ser mais lenta: é necessário "regenerar" muitos indices.
alfatek
Administrador
Administrador
 
Mensagens: 3257
Registado: Sábado Abr 06, 2002 18:28
Localização: Coimbra

Mensagempor jsa » Quinta Mar 15, 2007 17:19

Agardeço desde já a rápida resposta Alfatek,

O sistema operativo do servidor é XP ou XP Embedded.
Não há limitações da rede porque a BD está na mesma máquina (locolhost).
A versão do MySQL penso que é 4.1, mas se a versão for limitação posso instalar a ultima.
A tabela onde os dados vão ser guardados tem cerca de 80 colunas (1 do tipo timestamp e as restantes do tipo double).
Queria gravar dados em tempo real provenientes de medições.
Neste momento guardo os dados num ficheiro e só depois passo para a BD, mas não consigo mais de 20K/s.

Abraço
jsa
Novato
Novato
 
Mensagens: 4
Registado: Quinta Mar 15, 2007 16:21

Mensagempor jsa » Quinta Mar 15, 2007 17:36

Será que alterando a "Table Engine" para NDB tenho melhor desempenho?
Já o tentei fazer mas ocorre um erro "is not enabled" onde posso activar?

Também já li que alterando o valor das varáveis "key_buffer" e "sort_buffer_size" ficaria com mais memoria desponivel para os processos do MySQL.
Como posso fazer alteração?


Abraço
jsa
Novato
Novato
 
Mensagens: 4
Registado: Quinta Mar 15, 2007 16:21

Mensagempor alfatek » Quinta Mar 15, 2007 23:44

penso que o melhor engine para o caso ainda é o MyISAM, mas não tenho a certeza.

quanto às variáveis referidas, não me parece que tenham influência na velocidade de inserção. apenas na velocidade dos SELECTs.

para saber como fazer essa alteração basta procurar no google "key_buffer mysql optimization"


Uma tabela com 80 colunas também me costuma parecer uma má ideia que pode prejudicar a performance... Mas obviamente que há excepções e pode realmente ser a melhor solução.

A tabela tem algum indice ou primary key associada? [neste caso não deve ter, para ter melhor performance]

Experimente usar MySQL 5, teoricamente tem melhor performance ou então usar MySQL 3.23.


Mas como já referi, não estou a ver grandes optimizações que se possam fazer a inserir dados...as optimizações são mais ao nivel do hardware, de configurar bem o sistema operativo e do próprio desenho da(s) tabela.


Fica a referência:
http://www.oreilly.com/catalog/hpmysql/toc.html
alfatek
Administrador
Administrador
 
Mensagens: 3257
Registado: Sábado Abr 06, 2002 18:28
Localização: Coimbra

Mensagempor jsa » Sexta Mar 16, 2007 14:36

Estive a fazer uns testes e realmente tens razão.
Modifiquei o valor das variáveis no ficheiro "my.cnf" e não noto melhorias significativas.
A unica alteração que teve algum efeito nos tempos foi a instalação de uma diferente versão do MySQL.
Tinha instalado o MySQL versão 4.1 e agora instalei a versão 5.0.33 e notei que os inserts ficam mais lentos.
No ciclo de inserts em que estou a tenstar antes demorava 3,7 s agora demora 4,2 s.
Estou a utilizar o XAMPP 1.6.0a com o MySQL, mas penso que não é por aí o problema.
jsa
Novato
Novato
 
Mensagens: 4
Registado: Quinta Mar 15, 2007 16:21


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron