説明
この構成パラメータは、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';