2016-05-08 2 views
0

Die Frage bezieht sich auf sphinx Echtzeit (rt) Indizes. Ich habe einen verteilten Index, der drei RT-Indizes enthält. Jeder rt Index hat etwa 21 Millionen Dokumente pro rt Index (insgesamt 3 * 21 = 63 Millionen).Sphinx Echtzeit-Index, unterstützt Multi-Thread-Suche, noch? Was ist, wenn sie Teil eines verteilten Indexes sind?

Ich versuche, Leistung dieser Indexkonfiguration zu verbessern, und kam in diesem informativen Beitrag:

Ab diesem Moment wird der RT-Index nur ein Kern zur Suche verwenden, keine Unabhängig davon, wie viele Platten Stücke hat es (das kann sich in Zukunft ändern!).

Quellehttp://sphinxsearch.com/blog/2014/02/12/rt_performance_basics/comment-page-1/ (Link 2014 datierte)

Ist die obige Aussage bedeutet, dass die obige Konfiguration für die Indizes immer in einer Single-Threaded Weise zur Suche laufen, also wenn ich drei rt Indizes in ein verteilter Index, auf einer Maschine mit vier Kernen können nur drei Suchvorgänge gleichzeitig ausgeführt werden, die dann auf drei Kerne durch den verteilten Index verteilt werden?

Antwort

1

Der verteiltem Index jede Komponente Index in einem neuen Thread ausgeführt werden soll, aber jeder RT-Index Gewinde Singled wird.

... so ist es 3 Kerne verwenden könnte die Abfrage (ein RT-Index pro Kern)

Aber beachten Sie die Zuordnung von Threads zu Kern ist nicht absolut zu laufen. Das hängt vom Betriebssystem ab. Die drei "Threads" könnten am Ende auf einem Kern laufen. ... auch sphinx ist nicht darauf beschränkt, so viele Threads laufen zu lassen, wie es Kerne gibt. Es kann mehr Threads spawnen, die um Kerne konkurrieren.

+0

Bedeutet das, dass rt-Indizes für meinen Fall nicht geeignet sind? Wie kann ich Leistung erzielen? Im Moment benötigt jede Abfrage mit einem Schlüsselwort, das vorher nicht gesucht wurde (nicht zwischengespeichert), ungefähr 10 Sekunden, um nur die Anzahl der Datensätze zu zählen (*). Ich habe etwa 3000 RAM Chunks/RT-Index, die nach dem Artikel eine Ursache für Leistungseinbußen sein könnte, versuche ich, dieses Problem zu beheben. Aber wird sich das ändern, vorausgesetzt, ich wäre in der Lage, nur 3 Suchvorgänge parallel zu machen oder wie du sagtest keine !! * Tränen rollten * – SagaciousLearner

+1

Gut für einen Start nicht mit count() - das ist sehr ineffizient! Führen Sie eine Abfrage aus und können Sie auch die Anzahl der Datensätze in SHOW META abrufen. Wenn Sie wirklich ohne tatsächliche Dokumente zählen möchten, verwenden Sie LIMIT 0. – barryhunter

Verwandte Themen