その他のFAQ
このトピックでは、一般的な質問への回答を提供します。
VARCHAR (32) と STRING は同じストレージスペースを占有しますか?
どちらも可変長データ型です。同じ長さのデータを保存する場合、VARCHAR (32) と STRING は同じストレージスペースを占有します。
VARCHAR (32) と STRING はデータクエリにおいて同じパフォーマンスを発揮しますか?
はい。
Oracle からインポートした TXT ファイルが、文字セットを UTF-8 に設定しても文字化けするのはなぜですか?
この問題を解決するには、以下の手順を実行します。
-
例えば、original という名前のファイルがあり、そのテキストが文字化けしています。このファイルの文字セットは ISO-8859-1 です。次のコードを実行してファイルの文字セットを取得します。
file --mime-encoding origin.txt
origin.txt: iso-8859-1 -
iconv
コマンドを実行して、このファイルの文字セットを UTF-8 に変換します。iconv -f iso-8859-1 -t utf-8 origin.txt > origin_utf-8.txt
-
変換後もこのファイルのテキストが文字化けする場合は、このファイルの文字セットを GBK に再設定し、再度 UTF-8 に変換します。
iconv -f gbk -t utf-8 origin.txt > origin_utf-8.txt
MySQL で定義された STRING の長さは StarRocks で定義されたものと同じですか?
VARCHAR(n) の場合、StarRocks は "n" をバイトで定義し、MySQL は "n" を文字で定義します。UTF-8 によれば、1つの漢字は3バイトに相当します。StarRocks と MySQL が "n" を同じ数値で定義した場合、MySQL は StarRocks の3倍の文字を保存します。
テーブルのパーティションフィールドのデータ型を FLOAT、DOUBLE、または DECIMAL にできますか?
いいえ、DATE、DATETIME、および INT のみがサポートされています。
テーブル内のデータが占有するストレージスペースを確認するにはどうすればよいですか?
SHOW DATA ステートメントを実行して、対応するストレージスペースを確認します。また、データ量、コピー数、行数も確認できます。
注意: データ統計には時間遅延があります。
StarRocks データベースのクォータ増加を要求するにはどうすればよいですか?
クォータ増加を要求するには、次のコードを実行します。
ALTER DATABASE example_db SET DATA QUOTA 10T;
UPSERT ステートメントを実行してテーブル内の特定のフィールドを更新することはできますか?
StarRocks 2.2 以降では、主キーテーブルを使用してテーブル内の特定のフィールドを更新することができます。StarRocks 1.9 以降では、主キーテーブルを使用してテーブル内のすべてのフィールドを更新することができます。詳細については、StarRocks 2.2 の Primary Key table を参照してください。
2つのテーブルまたは2つのパーティション間でデータを交換するにはどうすればよいですか?
2つのテーブルまたは2つのパーティション間でデータを交換するには、SWAP WITH ステートメントを実行します。SWAP WITH ステートメントは、INSERT OVERWRITE ステートメントよりも安全です。データを交換する前に、データを確認し、交換後のデータが交換前のデータと一致しているかどうかを確認します。
-
2つのテーブルを交換する: 例えば、table 1 という名前のテーブルがあります。別のテーブルで table 1 を置き換えたい場合、次の手順を実行します。
-
table 2 という新しいテーブルを作成します。
create table2 like table1;
-
Stream Load、Broker Load、または Insert Into を使用して table 1 から table 2 にデータをロードします。
-
table 1 を table 2 で置き換えます。
ALTER TABLE table1 SWAP WITH table2;
これにより、データは正確に table 1 にロードされます。
-
-
2つのパーティションを交換する: 例えば、table 1 という名前のテーブルがあります。table 1 のパーティションデータを置き換えたい場合、次の手順を実行します。
-
一時パーティションを作成します。
ALTER TABLE table1
ADD TEMPORARY PARTITION tp1
VALUES LESS THAN("2020-02-01"); -
table 1 から一時パーティションにパーティションデータをロードします。
-
table 1 のパーティションを一時パーティションで置き換えます。
ALTER TABLE table1
REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);
-
フロントエンド (FE) を再起動すると "error to open replicated environment, will exit" というエラーが発生します
このエラーは BDBJE のバグが原因で発生します。この問題を解決するには、BDBJE のバージョンを 1.17 以上に更新してください。
新しい Apache Hive テーブルからデータをクエリすると "Broker list path exception" というエラーが発生します
問題の説明
msg:Broker list path exception
path=hdfs://172.31.3.136:9000/user/hive/warehouse/zltest.db/student_info/*, broker=TNetworkAddress(hostname:172.31.4.233, port:8000)
解決策
StarRocks の技術サポートに連絡し、namenode のアドレスとポートが正しいかどうか、および namenode のアドレスとポートにアクセスする権限があるかどうかを確認してください。
新しい Apache Hive テーブルからデータをクエリすると "get hive partition metadata failed" というエラーが発生します
問題の説明
msg:get hive partition meta data failed: java.net.UnknownHostException: emr-header-1.cluster-242
解決策
ネットワークが接続されていることを確認し、host ファイルを StarRocks クラスター内の各バックエンド (BE) にアップロードしてください。
Apache Hive の ORC 外部テーブルにアクセスすると "do_open failed. reason = Invalid ORC postscript length" というエラーが発生します
問題の説明
Apache Hive のメタデータは FEs にキャッシュされています。しかし、StarRocks がメタデータを更新するには2時間の遅延があります。StarRocks が更新を完了する前に、Apache Hive テーブルに新しいデータを挿入したりデータを更新したりすると、BEs がスキャンする HDFS のデータと FEs が取得するデータが異なるため、このエラーが発生します。
MySQL [bdp_dim]> select * from dim_page_func_s limit 1;
ERROR 1064 (HY000): HdfsOrcScanner::do_open failed. reason = Invalid ORC postscript length
解決策
この問題を解決するには、次のいずれかの操作を行います。
- 現在のバージョンを StarRocks 2.2 以上にアップグレードします。
- Apache Hive テーブルを手動でリフレッシュします。詳細については、Metadata caching strategy を参照してください。
MySQL の外部テーブルに接続すると "caching_sha2_password cannot be loaded" というエラーが発生します
問題の説明
MySQL 8.0 のデフォルトの認証プラグインは caching_sha2_password です。MySQL 5.7 のデフォルトの認証プラグインは mysql_native_password です。このエラーは、誤った認証プラグインを使用しているために発生します。
解決策
この問題を解決するには、次のいずれかの操作を行います。
- StarRocks に接続します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
my.cnf
ファイルを修正します。
vim my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password
テーブルを削除した後、ディスクスペースをすぐに解放するにはどうすればよいですか?
DROP TABLE ステートメントを実行してテーブルを削除すると、StarRocks は割り当てられたディスクスペースを解放するのに時間がかかります。割り当てられたディスクスペースをすぐに解放するには、DROP TABLE FORCE ステートメントを実行してテーブルを削除します。DROP TABLE FORCE ステートメントを実行すると、StarRocks は未完了のイベントがあるかどうかを確認せずにテーブルを直接削除します。DROP TABLE FORCE ステートメントを実行する際は注意が必要です。テーブルが削除されると、復元できません。
StarRocks の現在のバージョンを確認するにはどうすればよいですか?
select current_version();
コマンドまたは CLI コマンド ./bin/show_fe_version.sh
を実行して、現在のバージョンを確認します。
FE のメモリサイズを設定するにはどうすればよいですか?
メタデータは FE が使用するメモリに保存されます。タブレットの数に応じて FE のメモリサイズを設定できます。例えば、タブレットの数が100万未満の場合、FE に最低16GBのメモリを割り当てる必要があります。fe.conf ファイルの JAVA_OPTS 設定項目で -Xms
と -Xmx
のパラメータ値を設定し、-Xms
と -Xmx
のパラメータ値は一致させる必要があります。すべての FEs で設定が同じである必要があります。なぜなら、どの FE も Leader に選出される可能性があるからです。
タブレットの数 | 各 FE のメモリサイズ |
---|---|
100万未満 | 16 GB |
1 ~ 2 百万 | 32 GB |
2 ~ 5 百万 | 64 GB |
5 ~ 10 百万 | 128 GB |
StarRocks はどのようにクエリ時間を計算しますか?
StarRocks は複数のスレッドを使用してデータをクエリすることをサポートしています。クエリ時間は、複数のスレッドがデータをクエリするのに使用する時間を指します。
StarRocks はデータをローカルにエクスポートする際にパスを設定することをサポートしていますか?
いいえ。
StarRocks の同時実行の上限は何ですか?
実際のビジネスシナリオまたはシミュレートされたビジネスシナリオに基づいて同時実行の制限をテストできます。一部のユーザーのフィードバックによると、最大20,000 QPS または30,000 QPS を達成できることがあります。
StarRocks の SSB テストの初回パフォーマンスが2回目より遅いのはなぜですか?
最初のクエリでディスクを読み取る速度はディスクのパフォーマンスに関連しています。最初のクエリの後、ページキャッシュが生成されるため、後続のクエリは以前よりも速くなります。
クラスターには最低何台の BEs を構成する必要がありますか?
StarRocks は単一ノードのデプロイをサポートしているため、最低1台の BE を構成する必要があります。BEs は AVX2 で実行する必要があるため、8コア、16GB 以上の構成のマシンに BEs をデプロイすることをお勧めします。
Apache Superset を使用して StarRocks のデータを視覚化する際にデータ権限を設定するにはどうすればよいですか?
新しいユーザーアカウントを作成し、テーブルクエリに対する権限をユーザーに付与することでデータ権限を設定できます。
enable_profile
を true
に設定した後、プロファイルが表示されないのはなぜですか?
レポートはアクセスのためにリーダー FE にのみ送信されます。
StarRocks のテーブル内のフィールド注釈を確認するにはどうすればよいですか?
show create table xxx
コマンドを実行します。
テーブルを作成する際に、NOW() 関数のデフォルト値を指定するにはどうすればよいですか?
StarRocks 2.1 以降のバージョンのみが関数のデフォルト値を指定することをサポートしています。StarRocks 2.1 より前のバージョンでは、関数に対して定数のみを指定できます。
BE ノードのストレージスペースを解放するにはどうすればよいですか?
rm -rf
コマンドを使用して trash
ディレクトリを削除できます。スナップショットからデータを復元した場合は、snapshot
ディレクトリを削除できます。
BE ノードに追加のディスクを追加できますか?
はい。BE の設定項目 storage_root_path
で指定されたディレクトリにディスクを追加できます。