Apache Dorisの非同期マテリアライズドビューと運用FAQ

SQL関連の問い合わせ

Q1: 非同期マテリアライズドビューの最終更新時刻を確認する方法

💡A1: 以下のクエリを実行してください:

SELECT * FROM mv_infos('database'='db_name') WHERE Name = 'mv_name' \G;

詳細は公式ドキュメントを参照:
https://doris.apache.org/zh-CN/docs/sql-manual/sql-functions/table-functions/mv_infos

Q2: テーブルレプリカ数の変更方法

💡A2: 以下の手順で実行:

1. ノード数 ≧ レプリカ数であること
2. 既存パーティション:ALTER TABLE tbl_name MODIFY PARTITION p1 SET ("replica_count" = "3");
3. 動的パーティション:ALTER TABLE db.tbl SET ("dynamic_partition.replica_count" = "3");
4. 非パーティションテーブル:ALTER TABLE db.tbl SET ("replica_count" = "3");

データ操作に関する課題

Q1: MySQLとDorisのVARCHAR長対応関係

💡A1: 変換式:

MySQL VARCHAR長 × 3 = Doris VARCHAR長

理由:MySQLのnは文字数、DorisのMはバイト長。UTF-8で最大3バイト/文字のため。

Q2: INSERT INTO SELECTの遅延調査方法

💡A2: 診断手順:

SET dry_run_query = true; -- テストモード有効化
1. dry_run_query有効時も遅延:クエリ最適化が必要
2. dry_run_queryで改善:データ転送/ストレージのボトルネック
※ 使用後はSET dry_run_query = false;で戻すこと

Q3: 複数レプリカ間のデータ不一致

💡A3: 対応フロー:

1. データ更新源を確認
2. SET use_fix_replica = 0; -- 固定レプリカ指定
3. 不整合タブレットを特定後:
   ADMIN SET REPLICA STATUS PROPERTIES("tablet_id"="10001", "be_id"="20001", "status"="invalid");

運用管理の課題

Q1: BE起動エラーの対応

💡A1: 主な要因:

1. CPUアーキテクチャ不整合:be/lib/doris_be -v と uname -a を比較
2. 必須パラメータ変更(例:vm.max_map_count)
3. その他要因はログ追加で調査

Q2: 手動データ再分散方法

💡A2: タブレット移行APIで実行:
https://doris.apache.org/zh-CN/docs/dev/admin-manual/http-actions/be/tablet-migration

Q3: プロファイリングのグローバル有効化

💡A3: パフォーマンス影響のためセッション単位での使用を推奨:

SET enable_profile = true; -- セッション限定

Q4: ストレージ構成のベストプラクティス

💡A4: RAID不要。複数物理ディスクを個別マウント推奨。

設計原理の解説

Q: キーカラムの配置順序要件

💡A: 主な理由:

1. ソート効率向上
2. データ識別性の明確化
3. プレフィックスインデックスによる検索最適化
詳細:https://doris.apache.org/zh-CN/docs/data-table/index/index-overview/

タグ: 非同期マテリアライズドビュー テーブルレプリカ管理 データ型マッピング クエリパフォーマンスチューニング ストレージ最適化

7月15日 20:19 投稿