2

最大長が 64 バイトの文字列を格納するために使用される 2 つのバイナリ列と 2 つの整数列を含むテーブルがあります。このテーブルには 1,000 万以上の行があり、7 GB の使用可能なメモリのうち 2 GB のメモリを使用しているため、使用可能なメモリが十分に残っています。また、 http://docs.memsql.com/latest/setup/best_practices/に基づいて MemSQL を構成しました。

バイナリ列が特定の値と比較される単純な選択 SQL の場合、MemSQL は SQL Server よりも約 3 倍高速であるため、MemSQL を使用する構成やハードウェアなどの問題を除外できます。

を使用する複雑な SQL の場合

  • Select 句の部分文字列操作と
  • where句での部分文字列と長さの操作

MemSQL は、SQL Server よりも約 10 倍遅くなります。MemSQL でのこれらの SQL の測定されたパフォーマンスは、SQL コンパイル時間が含まれていないことを確認するために、最初の数回の実行後に取得されました。MemSQL のパフォーマンスの問題は、バイナリ列と部分文字列および文字列の長さの操作を処理する方法に関係しているようです。

  1. MemSQL で同様のパフォーマンスの問題を見た人はいますか? ある場合、列の型と SQL 操作は何でしたか?

  2. varchar 列の部分文字列と長さの操作について、MemSQL で同様のパフォーマンスの問題を見た人はいますか?

ありがとう。

マイケル、

4

2 に答える 2

1

私の推奨事項: 行ストアに戻りますが、VARBINARY代わりに を使用BINARYして、列にインデックスを配置するか、永続化された列を作成することを検討し、述語を で書き直してみてくださいlike
クエリの例を貼り付けていただければ、変換をお手伝いできます。

関連するドキュメントはここにあります dev.mysql.com/doc/refman/5.0/en/pattern-matching.html docs.memsql.com/4.0/concepts/computed_columns

幸運を。

于 2015-07-14T20:20:15.573 に答える