2013-06-12 9 views

Antwort

2

Dies liegt daran, dass die Datenbank gruppierte Primärschlüssel verwendet, sodass die Abfrage jede Zeile einzeln nach dem Schlüssel durchsucht, zeilenweise nach quälender Zeile, nicht nach einem Index.

  • Führen Sie optimize table. Dadurch wird sichergestellt, dass die Datenseiten physisch in sortierter Reihenfolge gespeichert sind. Dies könnte möglicherweise eine Bereichssuche auf einem geclusterten Primärschlüssel beschleunigen.

  • erstellen Sie einen zusätzlichen nicht-primären Index nur für die Spalte change_event_id . Dies speichert eine Kopie dieser Spalte in Indexseiten, die viel schneller zu scannen sind. Nach dem Erstellen der Plan sicher, zu erklären überprüfen Sie es

+1

Etwas sagt mir, dass AlexHenderson_v1.00 die falsche Frage beantwortet hat. –

+0

Nein. Der Kommentar muss nach meiner Antwort bearbeitet worden sein. Etwas sagt mir, dass du meinen Namen falsch buchstabiert hast. –

11
select * from table 

den neuen Index ist verwenden, können Sie eine Karte nur Job, aber

Select Count(*) from table 

Es kann eine Karte sein und Job reduzieren

Hoffe, das hilft.

+1

Ok danke, Kannst du mir erklären, wie der Code dahinter funktioniert? Ist es irgendwie möglich, Ausführungszeit zu bekommen? Was ist MEIN JOB? – Haris

3

Es gibt drei Arten von Operationen, die eine Hive-Abfrage ausführen kann.

In der Reihenfolge der billigsten und schnellsten zu teuer und langsamer hier sind sie.

Eine Hive-Abfrage kann eine Nur-Metadaten-Anfrage sein.

Tabellen anzeigen, Tabelle beschreiben sind Beispiele. In diesen Abfragen führt der Hive-Prozess eine Suche im Metadatenserver durch. Der Metadatenserver ist eine SQL-Datenbank, wahrscheinlich MySQL, aber die eigentliche Datenbank ist konfigurierbar.

Eine Hive-Abfrage kann eine hdfs-Anfrage sein. Wählen Sie * aus der Tabelle, wäre ein Beispiel. In diesem Fall kann die Struktur die Ergebnisse durch Ausführen einer hdfs-Operation zurückgeben. hadoop fs -get, mehr oder weniger.

Eine Bienenstockabfrage kann ein Map Reduce-Job sein.

Hive muss das Jar an hdfs liefern, der Jobtracker stellt die Aufgaben in die Warteschlange, der Tasktracker führt die Aufgaben aus, die endgültigen Daten werden in hdfs gespeichert oder an den Client gesendet.

Der Map Reduce-Job hat auch andere Möglichkeiten.

Es kann sich um einen Nur-Karten-Job handeln. Wählen Sie * aus der Tabelle mit der ID> 100 aus, beispielsweise kann die gesamte Logik auf den Mapper angewendet werden.

Es kann ein Map- und Reduce-Job sein, Wählen Sie min (id) aus der Tabelle; Wählen Sie * aus der Tabellenreihenfolge nach ID;

Es kann auch dazu führen, dass mehrere Karte reduzieren Pässe, aber ich denke, das obige fasst einige Verhaltensweisen zusammen.