はじめに
Vertica8.0より、データベースユーザ単位で以下の制御ができるようになりました。・接続セッションの最大数を設定
・接続セッションのアイドルタイムアウト時間を設定
・接続セッションを切断
本記事では、上記機能の利用方法についてご紹介します。
接続セッションの最大数を設定する
ユーザ毎のセッション最大数は、CREATE USER文やALTER USER文のオプションであるMAXCONNECTIONSにて設定するこができます。構文
1 2 3 4 5 6 |
{ CREATE | ALTER } USER 'ユーザ名' MAXCONNECTIONS {'セッション数' | NONE} ON {NODE | DATABASE}; NONE:無制限(デフォルト) ON NODE:クラスタ内の各ノードに適用 DATABASE:データベース全体に適用 |
実行例
u1という新規ユーザの最大接続数をデータベース全体で1に設定する
1 2 |
dbadmin=> CREATE USER u1 MAXCONNECTIONS 1 ON DATABASE ; CREATE USER |
MAXCONNECTIONSに設定した値を超えるセッション数で接続しようとしたときのエラー例
1 2 3 |
dbadmin=> \c - u1 FATAL 7470: New session rejected because connection limit of 1 on database already met for u1 Previous connection kept |
接続セッションのアイドルタイムアウト時間を設定する
ユーザ毎の接続セッションのアイドルタイムアウト時間は、CREATE USER文やALTER USER文のオプションであるIDLESESSIONTIMEOUTにて設定するこができます。構文
1 2 3 4 5 |
{ CREATE | ALTER } USER 'ユーザ名' IDLESESSIONTIMEOUT {'タイムアウト時間' | NONE}; NONE:無制限(デフォルト) タイムアウト時間:秒(seconds),分(minutes), 時間(hours), 日(days), 月(months), 年(year)で指定 |
実行例
u2という新規ユーザのセッションアイドルタイムアウトとなる時間を30秒に設定する
1 2 |
dbadmin=> CREATE USER u2 IDLESESSIONTIMEOUT '30 seconds'; CREATE USER |
IDLESESSIONTIMEOUTに設定した値を超えるアイドルタイムが経過した後にクエリを実行しようとしたときのエラー例
1 2 3 4 5 6 |
u2=> SELECT * from test; FATAL 7540: Session idle for more than 30000 ms. Session Timed Out! server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Succeeded. |
接続セッションを切断する
CLOSE_USER_SESSIONS関数は特定ユーザの接続セッションを切断できます。構文
1 |
SELECT CLOSE_USER_SESSIONS ( 'ユーザ名' ); |
実行例
u1ユーザのセッションをすべて切断する
1 2 3 4 5 |
dbadmin=> SELECT CLOSE_USER_SESSIONS('u1'); CLOSE_USER_SESSIONS ----------------------------------------------------------------------------- Close all sessions for user u1 sent. Check v_monitor.sessions for progress. (1 row) |
参考情報
Managing Client Connectionshttps://my.vertica.com/docs/9.2.x/HTML/index.htm#Authoring/AdministratorsGuide/ManagingClientConnections/OverviewClientConnections.htm
CREATE USER
https://my.vertica.com/docs/9.2.x/HTML/index.htm#Authoring/SQLReferenceManual/Statements/CREATEUSER.htm
ALTER USER
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/ALTERUSER.htm
CLOSE_USER_SESSION
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/CLOSE_USER_SESSIONS.htm
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。更新履歴
2019/04/15 検証バージョンを9.2に変更2016/12/11 本記事を公開