0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle 11gでアカウントごとのCPU上限を設定

Last updated at Posted at 2025-06-12

Oracle 11gでリソース・マネージャによるCPUやメモリなどのリソース制御を行う

Oracle 11gでは「リソース・マネージャ」を利用して、ユーザーやグループごとにCPUやその他リソースの割り当て上限を細かく制御できる。

設定
BEGIN

  -- SUBMIT_PENDING_AREA()するまで反映しない
  DBMS_RESOURCE_MANAGER.CREATE_PENDING_AREA();

  -- リソース・プランの作成
  DBMS_RESOURCE_MANAGER.CREATE_PLAN(
    PLAN    => 'CPU_PLAN',
    COMMENT => 'CPU使用率制限用プラン'
  );
  
  -- コンシューマ・グループの作成(必要に応じて)
  DBMS_RESOURCE_MANAGER.CREATE_CONSUMER_GROUP(
    CONSUMER_GROUP => 'LIMITED_USERS',
    COMMENT        => '制限対象ユーザーグループ'
  );
  
  -- プラン・ディレクティブの設定
  -- 例:LIMITED_USERSグループにCPU使用率20%の上限を設定
  DBMS_RESOURCE_MANAGER.CREATE_PLAN_DIRECTIVE(
    PLAN             => 'CPU_PLAN',
    GROUP_OR_SUBPLAN => 'LIMITED_USERS',
    COMMENT          => '制限ユーザー用',
    UTILIZATION_LIMIT => 20
  );

  -- 設定の確定
  DBMS_RESOURCE_MANAGER.VALIDATE_PENDING_AREA();
  DBMS_RESOURCE_MANAGER.SUBMIT_PENDING_AREA();

END;

制限を適用したいユーザーをコンシューマ・グループに割り当て

EXEC DBMS_RESOURCE_MANAGER_PRIVS.GRANT_SWITCH_CONSUMER_GROUP('対象ユーザー', 'LIMITED_USERS', TRUE);
ALTER USER 対象ユーザー DEFAULT CONSUMER GROUP LIMITED_USERS;

リソース・プランの有効化

ALTER SYSTEM SET RESOURCE_MANAGER_PLAN = 'CPU_PLAN';

これで設定したリソース・プランが有効になり、指定したグループごとにCPUなどのリソース上限が適用される。

確認

設定内容や有効化状況は、DBA_RSRC_PLAN_DIRECTIVESV$RSRC_PLANで確認。

-- 現在有効なリソースプラン
SELECT name, is_top_plan FROM v$rsrc_plan;

-- プランのディレクティブ内容
SELECT PLAN, GROUP_OR_SUBPLAN, TYPE, MGMT_P1, UTILIZATION_LIMIT
FROM DBA_RSRC_PLAN_DIRECTIVES
WHERE PLAN = 'CPU_PLAN';

mysqlでは

  • MySQL 5.x/8.0の標準ユーザー制限機能では、CPU上限は直接設定できない。
    • 1時間当たりのクエリなどの上限設定、
    • 同時接続数の設定は可能。
  • 8.0から仮想CPU単位でスレッドをグループに割り当てることで、CPUリソースの制御が可能になった。
CREATE USER 'username'@'host'
  IDENTIFIED BY 'password'
  WITH
    MAX_QUERIES_PER_HOUR 1000
    MAX_UPDATES_PER_HOUR 500
    MAX_CONNECTIONS_PER_HOUR 100
    MAX_USER_CONNECTIONS 5;
  • PostgreSQLでも同様にOracleのようには設定できない。(OS側のcgroup設定などで工夫する)

mariadbでは

  • ColumnStoreエンジンでUserPriorityを使うことでできる。
    • MariaDB ColumnStoreは、通常のMariaDBとは異なり「カラム型」「分散並列処理」「分析特化」のエンジン。
  • 標準のMariaDBサーバー(InnoDB/MyISAMなど)では利用できない。

テーブル作成時にENGINE=ColumnStoreを指定することでカラム型テーブルを作成できる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?