用户配置文件
用户配置文件是与某个用户相关联的属性,用于控制该用户对多个系统资源的访问权限。这些资源包括:
-
分配给用户的资源池 (RESOURCE POOL)
-
用户会话可以使用的最大内存量 (MEMORYCAP)
-
用户会话可以使用的最大临时文件存储量 (TEMPSPACECAP)
-
用户查询可以运行的最长时间 (RUNTIMECAP)
可使用 CREATE USER 语句设置这些属性,之后可以使用 ALTER USER 修改这些属性。
可使用两种策略来限制用户对资源的访问权限:直接为用户设置属性来控制资源使用,或将用户分配到一个资源池。第一种方法允许您对单个用户进行微调,而第二种方法可以轻松将许多用户分到一组,然后设置他们的共同资源使用量。
如果要通过资源池分配来统一限制用户资源,请考虑以下事项:
-
除非用户拥有 GENERAL 池的权限或者已分配给默认资源池,否则他们无法登录 Vertica。
-
如果删除了用户的默认资源池,则用户的查询将使用 GENERAL 池。
-
如果用户没有 GENERAL 池的权限,则在您尝试删除为他们分配的资源池时,DROP 操作将失败。
在 Eon 模式数据库中,您可以将用户的默认资源池设置为特定于子群集的资源池。如果是这种情况,Vertica 将使用以下方法之一来确定在用户连接到子群集时使用哪个资源池进行查询:
-
如果子群集使用为用户分配的默认资源池,那么用户的查询将使用为用户分配的资源池。
-
如果子群集不使用用户分配的默认资源池,但用户有权访问 GENERAL 池,则用户的查询使用 GENERAL 池。
-
如果子群集不使用为用户分配的资源池,并且用户对于 GENERAL 池没有权限,则用户无法从该子群集的任何节点进行查询。
以下示例说明了何设置用户的资源池属性。有关其他示例,请参阅将用户定义的池和用户配置文件用于工作负载管理中描述的场景。
示例
设置用户的 RESOURCE POOL 属性以将该用户分配到一个资源池。若要创建一个名为 user1
的用户,并且该用户具有对资源池 my_pool
的访问权限,请使用以下命令:
=> CREATE USER user1 RESOURCE POOL my_pool;
若要不通过指定池的方式来限制用户的内存量,可将该用户的 MEMORYCAP
设置为一个特定单位或占总可用内存的百分比。例如,若要创建一个名为 user2
的用户,并且将其会话限制为每个会话使用 200 MB 内存,请使用以下命令:
=> CREATE USER user2 MEMORYCAP '200M';
若要限制允许用户查询运行的时间,可设置 RUNTIMECAP
属性。若要阻止 user2
的查询运行超过五分钟,可使用以下命令:
=> ALTER USER user2 RUNTIMECAP '5 minutes';
若要限制用户会话可以使用的临时磁盘空间量,可将 TEMPSPACECAP
设置为一个特定大小或占可用临时磁盘空间的百分比。例如,下一个语句将创建 user3
,并将其限制为使用 1 GB 的临时空间:
=> CREATE USER user3 TEMPSPACECAP '1G';
可以将不同属性组合到一个命令中:例如,若要为 user3
限制 MEMORYCAP
和 RUNTIMECAP
,可将这两个属性包含在一个 ALTER USER 语句中:
=> ALTER USER user3 MEMORYCAP '750M' RUNTIMECAP '10 minutes';
ALTER USER
=> \x
Expanded display is on.
=> SELECT * FROM USERS;
-[ RECORD 1 ]-----+------------------
user_id | 45035996273704962
user_name | release
is_super_user | t
resource_pool | general
memory_cap_kb | unlimited
temp_space_cap_kb | unlimited
run_time_cap | unlimited
-[ RECORD 2 ]-----+------------------
user_id | 45035996273964824
user_name | user1
is_super_user | f
resource_pool | my_pool
memory_cap_kb | unlimited
temp_space_cap_kb | unlimited
run_time_cap | unlimited
-[ RECORD 3 ]-----+------------------
user_id | 45035996273964832
user_name | user2
is_super_user | f
resource_pool | general
memory_cap_kb | 204800
temp_space_cap_kb | unlimited
run_time_cap | 00:05
-[ RECORD 4 ]-----+------------------
user_id | 45035996273970230
user_name | user3
is_super_user | f
resource_pool | general
memory_cap_kb | 768000
temp_space_cap_kb | 1048576
run_time_cap | 00:10