2016-12-09 6 views
0

Ich habe einen einzelnen Knoten MemSQL-Installation mit einem Master-Aggregator und zwei Blätter (alle auf einer einzigen Box). Die Maschine hat 2 Kerne, 16 GB RAM und MemSQL Columnstore-Daten sind ~ 7 GB (von 21 GB CSV). Wenn Abfragen für die Daten ausgeführt werden, liegt die Speicherbelegung bei ca. 2150 MB (11 GB frei). Ich habe beide Blätter konfiguriert, um maximum_memory = 7000 in den memsql.cnf Dateien für beide Knoten zu haben (memsql-optimize tut ähnlich). Während der Abfrageausführung befindet sich der Hauptaggregator bei 100% CPU, wobei die 0-8% CPU ausgelassen wird.MemSQL Leistungsprobleme

Das scheint keine effiziente Nutzung der Systemressourcen zu sein, aber ich bin nicht sicher, was ich tun kann, um das System oder MemSQL zu konfigurieren, um CPU oder Speicher effizienter zu nutzen. Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Meine Datenbank kam von einem anderen Ort als die aktuelle memsql-Installation (vielleicht eine ältere Cluster-Konfiguration), obwohl es nur einen einzigen memsql-Cluster auf dem Rechner gibt. Im Abschnitt Datenbanken im Web-UI wurden keine Datenbanken/Tabellen angezeigt, aber meine Abfragen wurden mit den erwarteten Antworten erfolgreich abgeschlossen.

Drop-Datenbank/neu laden von CSV gelungen, die Situation zu beheben. Alle Kernthreads werden jetzt während der Abfrage verwendet.

0

Wenn während der Abfrageausführung der Rechner 100% CPU (auf allen Kernen) hat, spielt es keine Rolle, welcher MemSQL-Knoten er ist, der Durchsatz Ihrer Workload ist immer noch auf CPU beschränkt. Bei den meisten Abfragen würden Sie jedoch nicht erwarten, dass sich die meisten CPU-Ressourcen im Aggregator befinden. Daher sollten Sie sich EXPLAIN oder PROFILE Ihrer Abfragen ansehen.

Columnstore-Daten werden als Teil des Betriebssystem-Cache zwischengespeichert. Sie werden nicht als von MemSQL reservierter Speicher gezählt, weshalb die Speicherbelegung geringer ist als die Größe der Columnstore-Daten.

+0

Danke, Dateicache macht Sinn. Während der Abfrageausführung ist nur ein Thread auf einem Kern konstant bei 100% (meistens der Aggregator), die anderen 3 (2 Threads auf einem anderen Kern) haben eine sehr geringe CPU-Auslastung. Ich werde es erklären und sehen, was ich finden kann. – Tim