如何限制用户每天可以在Amazon Redshift上执行的查询量? 或者是否可以将群集的CPU时间限制到某个数量?
答案 0 :(得分:4)
不,不可能通过查询次数或CPU时间来限制用户。
据推测,您要么是因为用户占用资源,要么是因为希望限制猖獗的任务,例如仪表板发出太多请求,从而影响其他用户。
有两种选择:
编写自己的限制器
STL_QUERY
系统表包含Redshift处理的所有查询的列表,包括用户ID,开始时间和结束时间。
您可以编写一个查询此表的应用程序,以确定用户是否已超过大量查询或总CPU时间。然后,应用程序可以禁用用户或减少其权限。
使用工作量管理
Amazon Redshift可以定义多个查询队列来处理同步请求。每个队列都包含许多广告位。查询在插槽中运行。
用户可以分配到特定的查询队列,这样一个用户的查询就不会干扰其他用户的查询。
例如,可以将Dashboard用户全部分配到一个队列,而可以将交互式用户分配到不同的队列。如果仪表板同时进行太多查询,则它们将排队等待可用容量,而不会影响交互式用户。
但是,这仅限制同时查询的数量和分配的RAM量。它不会根据查询数量或使用的总CPU数来限制。
答案 1 :(得分:1)
您可以使用Redshift中的查询队列来限制一组用户查询对其他用户查询的影响。它似乎被记忆所分割,但它应该能够做你想要的。
进一步阅读:Defining Query Queues