IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

1 base InnoDB et 1 base MyISAM pour recherche fulltext


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 32
    Par défaut 1 base InnoDB et 1 base MyISAM pour recherche fulltext
    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

  2. #2
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    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.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 32
    Par défaut
    bonjour,

    merci des infos. je pense me tourner vers le batch nocturne, ça sera plus simple et moins gourmand.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quelle base de données je pourrais utiliser pour divers reporting ?
    Par xianxian620 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 10/04/2008, 21h00
  2. base oracle en local avec php pour langage
    Par hpl76 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/03/2008, 09h23
  3. Réponses: 7
    Dernier message: 18/02/2008, 14h33
  4. Probleme d'import en base InnoDB
    Par SYL_DBA dans le forum Outils
    Réponses: 5
    Dernier message: 26/03/2007, 15h16
  5. Outil pour rechercher dans toutes la base
    Par ChrOnOs83 dans le forum Access
    Réponses: 4
    Dernier message: 24/01/2006, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo