説明
この変数はV2.1バージョンから導入されました。
機能の概要
ob_sql_work_area_percentageは、SQLワークエリアメモリがテナント全体のメモリに占める割合を設定します。
権限要件
変数の確認
sysテナントとすべてのユーザーテナントはSHOW VARIABLESステートメント、またはSYS.TENANT_VIRTUAL_GLOBAL_VARIABLEビュー(Oracleモード)およびinformation_schema.GLOBAL_VARIABLESビュー(MySQLモード)を使用してグローバルシステム変数の値を確認できます。変数の変更
sysテナントはグローバルシステム変数の値を直接変更できます。MySQLユーザーテナントは
SUPERまたはALTER SYSTEM権限を持っている必要があります。Oracleユーザーテナントは
ALTER SYSTEM権限を持っている必要があります。
プロパティの説明
プロパティ |
説明 |
|---|---|
| パラメータタイプ | String |
| デフォルト値 | 5 |
| 値の範囲 | [0, 100] |
| 適用範囲 | Global |
| 変更は可能か | はい。SETステートメントを使用して変更できます。 |
使用方法
ワークエリアメモリとは、SQLソートなどのブロッキング演算子が使用するメモリを指します。これはテナントシステム変数ob_sql_work_area_percentageで制御され、デフォルト値は5%です。つまり、ワークエリアメモリ = テナントメモリ × ob_sql_work_area_percentage(デフォルト5%)となります。
リクエストの同時実行数が多く、かつ各リクエストが占有するワークエリアメモリが多い場合、ワークエリアメモリ不足のエラーが発生する可能性があります。よくあるシナリオとしてはunion、sort、group byなどが挙げられます。上記の問題が発生した場合、システム変数を適切に調整することで回避できます。例えば:
obclient> SET GLOBAL ob_sql_work_area_percentage = 10;