SQL クエリ
このトピックでは、SQL に関するよくある質問への回答を提供します。
マテリアライズドビューを作成するときに "fail to allocate memory." というエラーが発生する
この問題を解決するには、be.conf ファイルの memory_limitation_per_thread_for_schema_change パラメータの値を増やしてください。このパラメータは、スキームを変更するために単一のタスクに割り当てられる最大ストレージを指します。最大ストレージのデフォルト値は 2 GB です。
StarRocks はクエリ結果のキャッシュをサポートしていますか?
StarRocks は最終的なクエリ結果を直接キャッシュしません。v2.5 以降、StarRocks は Query Cache 機能を使用して、キャッシュ内の最初の段階の集約の中間結果を保存します。以前のクエリと意味的に同等の新しいクエリは、キャッシュされた計算結果を再利用して計算を高速化できます。Query Cache は BE メモリを使用します。詳細は Query cache を参照してください。
計算に Null が含まれる場合、ISNULL() 関数を除いて関数の計算結果は false になります
標準 SQL では、NULL 値を持つオペランドを含むすべての計算は NULL を返します。
StarRocks は DECODE 関数をサポートしていますか?
StarRocks は Oracle データベースの DECODE 関数をサポートしていません。StarRocks は MySQL と互換性があるため、CASE WHEN ステートメントを使用できます。
StarRocks の主キーテーブルにデータがロードされた直後に最新のデータをクエリできますか?
はい。StarRocks は Google Mesa を参考にしてデ ータをマージします。StarRocks では、BE がデータマージをトリガーし、データをマージするための 2 種類の Compaction を持っています。データマージが完了していない場合は、クエリ中に完了します。したがって、データロード後に最新のデータを読み取ることができます。
StarRocks に保存された utf8mb4 文字が切り捨てられたり文字化けしたりしますか?
いいえ。
alter table コマンドを実行すると "table's state is not normal" というエラーが発生する
このエラーは、前回の変更が完了していないために発生します。以下のコードを実行して、前回の変更の状態を確認できます。
show tablet from lineitem where State="ALTER";
変更操作にかかる時間はデータ量に関連しています。一般的に、変更は数分で完了します。テーブルを変更している間は、データロードが変更の完了速度を低下させるため、StarRocks へのデータロードを停止することをお勧めします。