1

memsql と mysql で次のクエリを実行しましたが、所要時間はかなり異なります。

Memsql

select count(*) from po A , cu B , tsk C  where A.customer_id = B.customer_id and B.taskid = C.id and A.domain = 5  and week(B.post_date) = 22;
+----------+
| count(*) |
+----------+
|    98952 |
+----------+
1 row in set (19.89 sec)

Mysql

select count(*) from po A , cu B , tsk C where A.customer_id = B.customer_id and B.taskid = C.id and A.domain = 5  and week(B.post_date) = 22;
+----------+
| count(*) |
+----------+
|    98952 |
+----------+
1 row in set (0.50 sec)

mysql は非常に高速であるのに、memsql のパフォーマンスが非常に悪いのはなぜですか?

mysql と memsql の両方が、同じ 8GB のクアッド コア マシン上にあります。memsql には、1 つのマスター Aggregator ノードと 3 つのリーフ ノードがあります。

結合がある場合、memsql のパフォーマンスは低下しますか?

アップデート

Docから、テーブルには、頻繁に結合することが予想される列にシャード キーが必要であることは明らかです。これにより、オプティマイザはクエリの実行中にネットワーク トラフィックを最小限に抑えることができます。

だから私はここで私が間違っていたと思います。シャード キーの代わりに、テーブルに単純な主キーを追加しました。

4

1 に答える 1

2

MemSQL でもう一度クエリを実行してみましたか? MemSQL は、クエリを初めて検出したときに、クエリ実行コードをコンパイルしてキャッシュします。MemSQL ではこれをコード生成と呼びます。

http://docs.memsql.com/latest/concepts/codegen/

クエリを再度実行すると、パフォーマンスが大幅に向上するはずです。

于 2015-09-04T16:25:54.933 に答える