|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : septembre 2005 Messages : 32 ![]() |
Bonjour,
J'ai deux applications (un front office et un back office) avec une base MySQL 5 "volumineuse". Le front office interroge souvent un champ text via une requête LIKE '%abc%' dans une table qui contient près de 75000 lignes. De manière générale, le font office ne fait que des SELECT. Autant dire que la recherche n'est pas des plus efficaces (environ 10 secondes) et je pense que c'est tout simplement lié au fait que le LIKE n'est pas franchement fait pour ça. Mon idée c'est de mettre un index FULLTEXT sur le champ en question. Après des tests, ça ne prend plus que 4 secondes pour faire la même recherche. Ma question est plutôt d'ordre pratique. En effet, ma base est entièrement en INNODB car les contraintes type FOREIGN KEY sont indispensables dans notre cas (la saisie des données se fait dans le back office) si l'on veut garder une base cohérente. Dans ce cas, pas de FULLTEXT, on est bien d'accord. Vous l'aurez compris je cherche à améliorer les performances des recherches via la front office. Je pense donc mettre en place une copie de la base INNODB entièrement dédiée au front office et adaptée à l'usage. Soit des tables en MyISAM et des index FULLTEXT bien placés. Dans un premier temps, que pensez-vous de l'idée ? Dans un deuxième temps, que me conseillez-vous pour faire la copie et la transformation INNODB->MyISAM (il faut supprimer les FK, change le moteur de chaque table et placer les index). Un shell qui lance des commande SQL ? une procédure stockée ? autre ? Notez que je peux avoir un différentiel dans les données dispos dans le front office par rapport au back office. Donc il est tout à fait envisageable de faire passer un traitement la nuit afin de rafraîchir la base du front office. Si toutefois il y aurait des solutions permettant de synchroniser la base MyISAM avec la base INNODB en temps réel, je suis près à les étudier (la réplication, ça peut servir à ça ?) Merci de vos contributions |
|
|
00
|
|
|
#2 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Bonjour,
C'est effectivement une bonne idée, d'ailleurs les forums Developpez ancienne version marchaient comme ça. Concernant la recopie des données je vois deux solutions : - La réplication, mais elle engendre pas mal de trafic réseau ; si c'est possible mieux vaut ne pas tout répliquer sinon le serveur de recherche subit une charge en écriture aussi élevée que le master. - Un batch qui tourne toutes les nuits et utilise mysqlbinlog ou mysqldump. Du moment que c'est du SQL qui est exécuté ou des données qui sont importées, il n'y a pas de "transformation" InnoDB -> MyISAM à faire, ça fonctionne quel que soit le moteur de stockage de la base de destination.
__________________
Pensez au bouton
|
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : septembre 2005 Messages : 32 ![]() |
bonjour,
merci des infos. je pense me tourner vers le batch nocturne, ça sera plus simple et moins gourmand. A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com