共有データ
このトピックでは、共有データクラスタに関するよくある質問への回答を提供します。
なぜテーブル作成が失敗するのですか?
BE ログ (be.INFO) を確認して、正確な原因を特定してください。一般的な原因には以下が含まれます:
- オブジェクトストレージ設定の誤設定(例:
aws_s3_path、endpoint、authentication)。 - オブジェクトストレージサービスの不安定性や例外。
その他のエラー:
エラーメッセージ: "Error 1064 (HY000): Unexpected exception: Failed to create shards. INVALID_ARGUMENT: shard info cannot be empty"
原因: 自動バケット推論が使用されている際に、CN または BE ノードが稼働していない場合に発生します。この問題は v3.2 で修正されています。
なぜテーブル作成に時間がかかるのですか?
バケット数が多すぎる(特にパーティション化されたテーブルの場合)と、StarRocks は多くのタブレットを作成します。システムはオブジェクトストレージ内の各タブレットに対してタブレットメタデータファイルを書き込む必要があり、その高いレイテンシーが総作成時間を大幅に増加させる可能性があります。以下を検討してください:
- バケット数を減らす。
- BE 設定
create_tablet_worker_countを通じてタブレット作成スレッドプールサイズを増やす。 - オブジェクトストレージでの高い書き込みレイテンシーを確認し、トラブルシューティングする。
なぜテーブルを削除した後もオブジェクト ストレージ内のデータがクリーンアップされないのですか?
StarRocks は 2 つの DROP TABLE モードをサポートしています:
DROP TABLE xxx: テーブルメタデータを FE のリサイクルビンに移動します(データは削除されません)。DROP TABLE xxx FORCE: テーブルメタデータとデータを即座に削除します。
クリーンアップが失敗した場合、以下を確認してください:
DROP TABLE xxx FORCEが使用されたかどうか。- リサイクルビンの保持パラメータが高すぎるかどうか。パラメータには以下が含まれます:
- FE 設定
catalog_trash_expire_second - BE 設定
trash_file_expire_time_sec
- FE 設定
- 削除エラーのための FE ログ(例:RPC タイムアウト)。必要に応じて RPC タイムアウトを増やします。
オブジェクトストレージ内のテーブルデータのストレージパスをどのように見つけることができますか?
以下のコマンドを実行してストレージパスを取得します。
SHOW PROC '/dbs/<database_name>';
例:
mysql> SHOW PROC '/dbs/load_benchmark';
+---------+-------------+----------+---------------------+--------------+--------+--------------+--------------------------+--------------+---------------+--------------------------------------------------------------------------------------------------------------+
| TableId | TableName | IndexNum | PartitionColumnName | PartitionNum | State | Type | LastConsistencyCheckTime | ReplicaCount | PartitionType | StoragePath |
+---------+-------------+----------+---------------------+--------------+--------+--------------+--------------------------+--------------+---------------+--------------------------------------------------------------------------------------------------------------+
| 17152 | store_sales | 1 | NULL | 1 | NORMAL | CLOUD_NATIVE | NULL | 64 | UNPARTITIONED | s3://starrocks-common/xxxxxxxxx-xxxx_load_benchmark-1699408425544/5ce4ee2c-98ba-470c-afb3-8d0bf4795e48/17152 |
+---------+-------------+----------+---------------------+--------------+--------+--------------+--------------------------+--------------+---------------+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.18 sec)
v3.1.4 より前のバージョンでは、テーブルデータは単一のディレクトリに散在していま す。
v3.1.4 以降、データはパーティションごとに整理されます。同じコマンドがテーブルのルートパスを表示し、そこにはパーティション ID にちなんで名付けられたサブディレクトリが含まれ、各パーティションディレクトリには data/(セグメントデータファイル)と meta/(タブレットメタデータファイル)のサブディレクトリが含まれます。
なぜ共有データクラスタでクエリが遅いのですか?
一般的な原因には以下が含まれます:
- キャッシュミス。
- コンパクション不足により、小さなセグメントファイルが多すぎて過剰な I/O が発生する。
- 並行性の問題(例:タブレットが少なすぎる)。
- 不適切な
datacache.partition_duration設定により、キャッシュが失敗する。
まず、Query Profile を分析して根本原因を特定する必要があります。
キャッシュミス
共有データクラスタでは、データがリモートに保存されるため、Data Cache が重要です。クエリが予期せず遅くなった場合、CompressedBytesReadRemote や IOTimeRemote などの Query Profile メトリクスを確認してください。
キャッシュミスの原因には以下が含まれます:
- テーブル作成時に Data Cache が無効化されている。
- ローカルキャッシュスペースが不足している。
- 弾力的スケーリングによるタブレットの移動。
- 不適切な
datacache.partition_duration設定によりキャッシュが妨げられる。
コンパクション不足
適切なコンパクションが行われないと、多くの履歴データバージョンが残り、クエリ中にアクセスされるセグメントファイルの数が増加します。これにより I/O が増加し、クエリが遅くなります。
コンパクション不足を診断するには:
-
関連するパーティションの Compaction Score を確認します。
Compaction Score は約 10 以下に保たれるべきです。過度に高い Compaction Score はコンパクションの失敗を示すことがよくあります。
-
SegmentsReadCountなどの Query Profile メトリクスを確認します。セグメント数が多い場合、コンパクションが遅れているか、停止している可能性があります。