2016-12-09 467 views
0

我有一個單節點MemSQL安裝,一個主聚合器和兩個葉子(全部在一個盒子上)。該機器具有2個核心,16Gb RAM,MemSQL列存儲數據約爲7Gb(來自21Gb CSV)。對數據運行查詢時,內存使用量上限爲〜2150Mb(11Gb可免費使用)。我已經在兩個節點的memsql.cnf文件中配置了兩個葉子,其中maximum_memory = 7000(memsql-optimize類似)。在查詢執行期間,主聚合器位於100%CPU,葉子0-8%CPU。MemSQL性能問題

這看起來不像是系統資源的高效使用,但我不確定我可以怎樣配置系統或MemSQL以更高效地使用CPU或內存。任何幫助將不勝感激!

回答

0

儘管在機器上只有一個memsql集羣,但我的數據庫來自其他地方,而不是當前的memsql安裝(也許是較早的集羣配置)。查看Web UI中的數據庫部分沒有顯示數據庫/表,但我的查詢成功並獲得了預期的答案。

從CSV中刪除數據庫/重新加載以解決問題。現在在查詢期間使用所有核心線程。

0

如果在查詢執行過程中,您的機器處於100%CPU(在所有內核上),那麼它對於哪個MemSQL節點無關緊要,您的工作負載吞吐量仍然是CPU上的瓶頸。但是對於大多數查詢來說,您不希望大部分cpu使用都在聚合器上,因此您可能需要查看EXPLAIN或PROFILE查詢。

Columnstore數據作爲操作系統文件緩存的一部分被緩存在內存中 - 它不會被視爲MemSQL保留的內存,這就是爲什麼您的內存使用量小於列存儲數據的大小。

+0

謝謝,文件緩存很有意義。在查詢執行過程中,一個核心上只有一個線程的常量爲100%(主要是聚合器),其他3個(其他核心上的2個線程)的CPU使用率很少。我會看看解釋,看看我能找到什麼。 – Tim