2010-04-30 5 views
1

J'accède à un grand jeu de données de texte indexé en utilisant sphinxse via MySQL. La taille du resultset est de l'ordre du gigaoctet. Cependant, j'ai remarqué que MySQL arrête la requête avec une erreur de suivi chaque fois que l'ensemble de données est supérieur à 16MB:Problème avec le jeu de résultats Sphinx supérieur à 16 Mo dans MySQL

1430 (HY000): Un problème est survenu lors du traitement de la requête sur la source de données étrangère. Erreur de source de données: mauvaise longueur de réponse searchd (longueur = 16777523)

La longueur indique la longueur du résultat qui a offensé MySQL. J'ai essayé la même requête avec le programme de recherche autonome de Sphinx. Ça fonctionne bien. J'ai essayé toutes les variables possibles dans MySQL et Sphinx, mais rien n'y fait. J'utilise Sphinx 0.9.9 rc-2 et MySQL 5.1.46.

Merci

Répondre

0

vous avez probablement besoin d'augmenter max_allowed_packet de sa valeur par défaut de 16M:

De mysql's documentation

Le client et le serveur ont leur propre variable max_allowed_packet, donc si vous voulez gérer gros paquets, vous devez augmenter cette variable à la fois dans le client et dans le serveur.

Si vous utilisez le programme client mysql, sa variable par défaut max_allowed_packet est de 16 Mo. Pour définir une valeur plus grande, lancez mysql comme ceci:

shell

> mysql --max_allowed_packet = 32M

qui définit la taille du paquet à 32Mo.

+0

Merci pour votre réponse. J'ai déjà essayé max_allowed_packet dans le serveur ainsi que le client. Cela n'a pas fonctionné :( – gmemon

1

J'ai finalement résolu le problème. Il s'avère que le plugin sphinx pour mysql (SphinxSE) code en dur la limite de réponse de 16 Mo sur le résultat dans le code source (mauvais mauvais code source). J'ai changé SPHINXSE_MAX_ALLOC en 1 * 1024 * 1024 * 1024 dans le fichier ha_sphinx.cc, et tout fonctionne bien maintenant.

Questions connexes