説明
この構成パラメータは、V1.4バージョンから導入されました。
機能の概要
memory_limitは、OBServerが利用可能な総メモリサイズを設定します。
OBServer上でmemory_limitの設定が有効になるためには、以下の2つの条件を満たす必要があります:
- 500テナント分の予約メモリが実際に使用しているメモリよりも大きいこと。
memory_limitの値がsystem_memoryとユニット単位で割り当てられたメモリの合計よりも高いこと。
上記の制限条件を満たさない場合、memory_limitの設定はエラーを報告せず、有効にもなりません。
権限要件
パラメータの確認
sysテナントとすべてのユーザーテナントはSHOW PARAMETERSステートメント、またはGV$OB_PARAMETERSビューを使用してこのパラメータを確認できます。パラメータの変更
この構成パラメータは
sysテナントのみが変更でき、ユーザーテナントでは変更できません。
プロパティの説明
| プロパティ | 説明 |
|---|---|
| パラメータタイプ | Capacity |
| デフォルト値 | 0、単位はMBです。 |
| 値の範囲 | [1G, +∞)
説明
|
| 変更は可能か | はい。ALTER SYSTEM SET ステートメントを使用して変更できます。 |
| OBServerノードの再起動が必要か | 不要です。設定は即時に反映されます。 |
使用方法
memory_limitのデフォルト値は0です。この値が0以外の場合、システムはmemory_limit_percentageの設定を無視し、memory_limitの設定値を優先的に使用します。例えば、物理マシンのメモリが100GBで、memory_limit_percentageが80に設定されている場合、メモリの80%を使用することを意味します。一方、memory_limitパラメータが'90G'に設定されている場合、実際の物理マシン上のOceanBaseデータベースが割り当てられるメモリはmemory_limitの設定、つまり90GBを使用します。memory_limit_percentageの詳細については、memory_limit_percentageを参照してください。memory_limitのデフォルト単位はMBです。例えば、memory_limit='40G'は、OceanBaseデータベースプロセスの使用メモリ上限を40GBに設定することを意味します。デフォルト単位がMBであるため、memory_limit=40960とmemory_limit='40G'は同じ値に設定されます。現在、
memory_limitの値に上限はありません。設定したメモリの最大上限が実際の物理メモリの合計を超えると、システム内の他の合計メモリに基づく値が過大になる可能性があります。
実行中のOceanBaseデータベースのメモリサイズを制限したい場合は、
memory_limitの値を直接変更して、期待される値に設定できます。設定後、バックグラウンドのReloadスレッドが動的に反映され、再起動は不要です。ただし、設定時にはmemory_limitの値がシステム全体の値より小さいことを確認する必要があります。注意
memory_limitの値は、OBServerノードが実際に使用しているメモリよりも大きい必要があります。
設定例
例えば、OBServerが利用可能な総メモリを32GBに設定するコマンドは次のとおりです:
obclient> ALTER SYSTEM SET memory_limit='32G';現在使用中のメモリ量(単位:GB)を確認する方法は次のとおりです:
obclient> SELECT value/1024/1024/1024 used_gb FROM v$sysstat WHERE name LIKE '%observer memory%' AND con_id = 1 AND stat_id=140008 AND name='observer memory used size';