Vikrant More Asked: 2017-09-13 00:23:56 +0800 CST2017-09-13 00:23:56 +0800 CST 2017-09-13 00:23:56 +0800 CST 如何在mysql中设置每个数据库的最大用户连接? 772 嗨,我是 MySQL 新手,目前使用 5.5 版,目前我有一个 MySQL 实例,该实例上托管了 50 个数据库。我们已经确定每个数据库都有固定数量的用户连接每个数据库正在使用,就像在我的情况下,它的 100 个用户在该数据库上处于活动状态。我们想知道是否有任何特定的设置可以观察到这种行为? mysql-5.5 mysql-5.6 2 个回答 Voted Mannoj 2017-09-13T00:59:51+08:002017-09-13T00:59:51+08:00 您可以每分钟设置一个 cron 以触发以下命令并将其通过管道传输到日志文件并每天轮换它。 select current_timestamp(); select count(*) sumOfUsers , user,db from information_schema.processlist group by user,db; 一天后,您可能会在 sumOfUsers 列中查找超过 90 的值以查看哪一行,然后您可能会在其上方获得时间戳。因此,您可以测量时间范围并在该时间附近进行手动监控,以查看连接数接近 100 的频率。您也可以在查询中添加 Host 以查看是否有任何特定的应用程序主机正在执行此堆积连接。 Best Answer Vérace 2017-09-13T03:53:53+08:002017-09-13T03:53:53+08:00 我没有在 MySQL 中这样做,但是如果您阅读此处(MySQL 5.6),您可以为每个用户帐户设置限制 - 但不是 AFAICS,每个模式(在链接中替换 5.5 或 5.7 以用于其他看起来相同的版本)。 这将是一个非常合乎逻辑和非常有价值的功能,虽然不了解 C/C++ 中 MySQL 引擎编码的内部细节,但我觉得这是一个非常有用的功能请求。如果您愿意打开一个并在这里报告,我将提交一份“我也是”! 文档的相关位在这里: 为了解决这些问题,MySQL 允许对个人帐户使用这些服务器资源进行限制: 一个帐户每小时可以发出的查询数 一个帐户每小时可以发布的更新数量 一个账号每小时可以连接服务器的次数 一个帐户同时连接到服务器的数量 注意这个词的重复account而不是schema! 更多在这里: 客户端可以发出的任何语句都计入查询限制,除非它的结果是从查询缓存中提供的。只有修改数据库或表的语句才计入更新限制。 这实际上是有道理的,而不是我期望从 MySQL 文档中获得的特征!:-) 最后(可能是最相关的!): 资源计数发生在每个帐户,而不是每个客户。例如,如果您的帐户的查询限制为 50,则无法通过同时建立两个与服务器的客户端连接将限制增加到 100。在两个连接上发出的查询一起计算。 因此,资源是per account基于基础而不是其他的。 一种潜在的解决方法是为每个模式指定一个用户帐户,然后将该用户限制为 x 次查询、y 次更新和 z 次同时连接。我知道不是很满意,但这就是现在的比赛状态! (ps +1 是一个好问题!)
您可以每分钟设置一个 cron 以触发以下命令并将其通过管道传输到日志文件并每天轮换它。
一天后,您可能会在 sumOfUsers 列中查找超过 90 的值以查看哪一行,然后您可能会在其上方获得时间戳。因此,您可以测量时间范围并在该时间附近进行手动监控,以查看连接数接近 100 的频率。您也可以在查询中添加 Host 以查看是否有任何特定的应用程序主机正在执行此堆积连接。
我没有在 MySQL 中这样做,但是如果您阅读此处(MySQL 5.6),您可以为每个用户帐户设置限制 - 但不是 AFAICS,每个模式(在链接中替换 5.5 或 5.7 以用于其他看起来相同的版本)。
这将是一个非常合乎逻辑和非常有价值的功能,虽然不了解 C/C++ 中 MySQL 引擎编码的内部细节,但我觉得这是一个非常有用的功能请求。如果您愿意打开一个并在这里报告,我将提交一份“我也是”!
文档的相关位在这里:
注意这个词的重复
account
而不是schema
!更多在这里:
这实际上是有道理的,而不是我期望从 MySQL 文档中获得的特征!:-)
最后(可能是最相关的!):
因此,资源是
per account
基于基础而不是其他的。一种潜在的解决方法是为每个模式指定一个用户帐户,然后将该用户限制为 x 次查询、y 次更新和 z 次同时连接。我知道不是很满意,但这就是现在的比赛状态!
(ps +1 是一个好问题!)