限制或限制用户在数据库中使用的资源?

限制或限制用户在数据库中使用的资源?

我想知道数据库(例如 MySQL)如何能够管理每个用户的资源(例如 Oracle 数据库资源管理器所做的那样),以便能够让用户仅在数据库处于空闲状态时才能获得资源。
https://stackoverflow.com/questions/2418581/is-there-a-way-to-throttle-or-limit-resources-used-by-a-user-in-oracle

答案1

依靠。

Oracle 有一个资源管理器。SQL Server 也有一个(2008 年获得一个)。其他(mySQL)没有。

它们是如何工作的?就像每个调度程序一样。基本上,它们测量性能计数器,如果一个用户/数据库超出分配的限制,他的查询就会比其他查询慢(通常优先级较低)。

请注意,“数据库大部分时间处于空闲状态”对于数据库来说确实是一个复杂的问题。你在说什么?IO?CPU?各种查询都有各种瓶颈。

答案2

据我所知,MySQL 没有办法人为地限制用户对资源的使用。

通常,您不会直接限制数据库访问/查询,如果您想向客户提供不同的服务级别,您可以在另一个级别进行限制(例如,您限制响应 Web 请求的进程数量,这将间接限制整个后端基础设施的资源使用情况)。

过度使用共享系统而给其他用户带来问题的用户通常会通过其他方式检测出来(例如,系统监控会提醒您系统无响应)并手动终止。但这不是正常操作的定期“调度”,而是问题检测和响应。

答案3

您可以通过 alter 命令来限制每个用户的资源量

ALTER USER 'dbreports'@'aihello.com' WITH MAX_QUERIES_PER_HOUR 100;
ALTER USER 'dbreports'@'aihello.com' WITH MAX_UPDATES_PER_HOUR 10;
ALTER USER 'dbreports'@'aihello.com' WITH MAX_CONNECTIONS_PER_HOUR 5;
ALTER USER 'dbreports'@'aihello.com' WITH MAX_USER_CONNECTIONS 2;

更多信息请点击这里:https://dev.mysql.com/doc/refman/8.0/en/user-resources.html

相关内容