2016-07-05 6 views

答えて

0

Apache Hawqでは、仮想セグメントはエグゼキュータのコンテナとして使用されます。その結果、クエリによって使用されるメモリは、仮想セグメントの数によって制御されます。 GUC hawq_rm_memory_limit_persegを使用すると、各ホスト(セグメントインスタンス)の合計メモリサイズを制御したり、仮想セグメントのメモリサイズを制御したり、各コンテナのmemsize(デフォルトでは256M)を使用して独自のresqueueを作成できます。

0

仮想セグメントのメモリ使用量は、すべてのフォークされたQEの合計メモリを計算するhawq_rm_stmt_vseg_memoryによって設定されます。異なるクエリステートメントが同じvsegに存在する可能性があるため、hawq_rm_stmt_vseg_memoryは異なるクエリ間で共有されます。

+0

しかし、私はhawqコードのコメントを見ました。 "hawq_rm_stmt_vseg_memory"は、 "1つのステートメントに対する1つの仮想セグメントのメモリ割り当て"を参照しています。異なるクエリ間で共有されていますか?そして、 "hawq_rm_stmt_vseg_memory * 1セグメントあたりの仮想セグメント数*トータルクエリステートメント"は "hawq_rm_memory_limit_perseg"より大きくなくてはなりませんか? –

+0

私はhawq_rm_stmt_vseg_memoryは、すべてのステートメントに対する1つのvsegのメモリクォータを意味すると思います。デフォルトでは、256Mです。だから、理論的には、hawq_rm_stmt_vseg_memory *セグメントあたりの義眼のセグメント数は、hawq_rm_memory_limit_persegより大きくてはいけません。他の人がこれを確認できますか? – ztao1987

0

hawq_rm_stmt_vseg_memoryは、1つの仮想セグメントのメモリクォータ(サイズ)です。デフォルト値は128MBです。つまり、1つの仮想セグメントのメモリサイズは128MBであり、1つのクエリは多数の仮想セグメントを要求することがあります。

0

@Wen Lin、「1つのクエリで多数の仮想セグメントが要求される可能性がある」と述べたので、1つの仮想セグメントも多くのクエリで共有されます。すべての共有クエリはメモリクォータを共有します。これはデフォルトで128mbですか?

0

@ztaoでは、仮想セグメントはクエリによって共有されません。 1つのクエリでは、RMから仮想セグメントを尋ねて、終了すると仮想セグメントをRMに返します。

関連する問題