我想知道数据库(如 MySQL)如何管理每个用户的资源(如 Oracle 数据库资源管理器),以便让用户只能在数据库大部分空闲时才获得资源。
https://stackoverflow.com/questions/2418581/is-there-a-way-to-throttle-or-limit-resources-used-by-a-user-in-oracle
我想知道数据库(如 MySQL)如何管理每个用户的资源(如 Oracle 数据库资源管理器),以便让用户只能在数据库大部分空闲时才获得资源。
https://stackoverflow.com/questions/2418581/is-there-a-way-to-throttle-or-limit-resources-used-by-a-user-in-oracle
要看。
Oracle 有一个资源管理器。SQL Server 也有一个(2008 年有一个)。其他(mySQL)没有。
他们是如何工作的?像每个调度程序一样。基本上他们测量性能计数器,如果一个用户/数据库超过分配的限制,他的查询与其他人相比会变慢(通常较低的优先级)。
请注意,“数据库大多处于空闲状态”对于数据库来说确实是一个复杂的问题。你说什么?IO?中央处理器?各种查询有各种瓶颈。
据我所知,MySQL 没有办法人为地限制用户的资源使用。
通常您不会直接限制数据库访问/查询,如果您想为客户提供不同的服务级别,您可以在另一个级别进行(例如,您限制响应 Web 请求的进程数量,这将间接限制整个资源的使用后端基础设施)。
过度使用共享系统到给其他用户带来问题的用户通常会被其他方式检测到(例如,系统监控会提醒您系统无响应)并被手动杀死。但这不是正常操作的常规“调度”,而是问题检测和响应。
您可以通过 alter 命令限制每个用户的资源量
更多信息在这里:https ://dev.mysql.com/doc/refman/8.0/en/user-resources.html