2 votes

indices annuels du sphinx

J'ai une base de données MySQL avec 2 millions d'enregistrements. J'utilise déjà sphinx pour indexer les données et ensuite les rechercher rapidement.

J'ai deux index. Un gros index qui est mis en rotation chaque jour à 3 heures du matin, et un plus petit qui contient uniquement les changements incrémentaux. Cet index est mis à jour toutes les 30 minutes et n'indexe que les nouvelles lignes de la base de données (celles qui sont insérées après 3 heures du matin).

Tout va bien. La recherche fonctionne. Mais je cherche quelques améliorations. Je n'ai pas besoin de réindexer la grande base de données chaque jour, car une fois que l'information est insérée dans la base, elle ne change pas (je n'ai que des insertions, pas de mises à jour). Donc reconstruire le grand index est absolument inutile.

Est-il possible de diviser cet indice en indices annuels ou même mensuels ? Cela va-t-il accélérer ou ralentir les requêtes de recherche ? Avez-vous des exemples de l'organisation de l'index et des sources de données ? Serait-il préférable de passer à des index en temps réel ?

0voto

barryhunter Points 10392

Vous pourriez simplement utiliser la fonction Fusionner

http://sphinxsearch.com/docs/current.html#index-merging

Une fois par jour, fusionnez votre "delta" avec le "principal". Juste après la fusion, vous voulez mettre à jour la table des compteurs, car les données dans la table principale ont changé, donc la valeur a changé.

(En général, plus vous avez d'index, plus la recherche sera affectée. Au bout du compte, la recherche dans un grand nombre de petits index demandera plus de travail qu'elle n'en économisera. - L'exception est si vous ne pouvez rechercher que des parties des données. Par exemple, si vous avez des requêtes qui ne recherchent que les enregistrements de l'année dernière, vous pouvez les modifier pour ne rechercher que dans le dernier index. C'est plus efficace que de rechercher tous les enregistrements pour en rejeter beaucoup).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X