2010-06-22 8 views
1

De temps à autre, nous recevons une requête en texte intégral particulièrement longue dans MySQL. La requête va durer très longtemps, actuellement j'en vois une qui court 50 000 secondes (et qui continue toujours). Utiliser Kill ou Kill Query sur la requête semble ne rien faire. De plus, la commande Timeout du côté client est de 30 secondes, de sorte que le client a déjà échoué et est parti, mais le serveur continue d'exécuter la requête, utilisant beaucoup de ressources. Dans le passé, nous avons dû redémarrer le service MySQL pour que ces requêtes cessent de s'exécuter. Existe-t-il un autre moyen d'arrêter ces requêtes. Nous prenons des mesures pour nous assurer que les demandes ne sont pas traitées en premier lieu, mais elles sont toujours exécutées de temps en temps, ce qui est très pénible. Principalement parce que pendant que les requêtes sont en cours d'exécution, nous sommes incapables d'effectuer des mises à jour sur la table.Table de verrouillage des requêtes de texte intégral MySQL

Un exemple d'une longue requête en cours d'exécution serait quelque chose le long des lignes de:

SELECT id,Title From Articles WHERE MATCH(ArticleText) AGAINST('+Nintendo*HD*Wii*' IN BOOLEAN MODE) 

Cela va particulièrement long à cause du * au milieu de la chaîne de recherche, ainsi qu'à la fin de la chaîne.

+0

Peut-être montrer un exemple d'une de ces requêtes de longue durée? – pjanaway

Répondre

0

Quelle version de MySQL utilisez-vous? Vous pourriez être en mesure de résoudre ce problème en procédant à une mise à niveau.

En outre, cet exemple de requête est-il réel? Je m'attendrais à ce que la chaîne de recherche soit quelque chose comme '+ Nintendo * + HD * + Wii *' au lieu de '+ Nintendo HD Wii *. Je n'ai jamais eu ce type de problème dans 5.0, mais dans les versions antérieures de MySQL 5.1, j'ai vu plusieurs problèmes très similaires concernant certains contenus dans la chaîne de recherche provoquant le blocage de la requête fulltext et son incompatibilité.

est ici celui que je voyais en 5.1.42, qui a été fixé dans 5.1.45: http://bugs.mysql.com/bug.php?id=50556 qui a été marqué comme dupe: http://bugs.mysql.com/bug.php?id=50351

Je signalé un autre problème avec les requêtes en texte intégral suspendu lorsque la recherche chaîne contenait un deux-points. Ce problème existait en 5.1.31 et a été corrigé en 5.1.37.

+0

Tout est réel, sauf que je substitué en faux noms de table et de colonne, ainsi que faux terme de recherche, mais le vrai terme de recherche était le même style. Nous avons supprimé la possibilité pour les utilisateurs d'entrer des caractères génériques au milieu des mots, mais cela semble être récurrent. Nous avons également rencontré des problèmes similaires avec les utilisateurs recherchant "." au milieu des mots. Semble être un problème continu avec beaucoup de caractères. Peut-être que la meilleure option est de mettre à niveau, et tous les problèmes disparaîtront. – Kibbee

+0

Quelle version de MySQL utilisez-vous? –