是每个mysql用户的mysql并发连接限制还是每个localhost的限制

时间:2012-06-28 08:19:59

标签: php mysql

我是新来的,但是从这个网站获得了好处。 我正在计划大型的php / mysql网站,但是对于mysql并发连接限制感到困惑。 是每个mysql数据库的限制还是每个localhost / cpanel帐户的限制? 如果它限制每个mysql数据库。因此,如果每个最终用户都有一个专用的mysql数据库,那么例如每1000个最终用户就有1000个数据库,但我只有1个mysql用户可以访问所有1000个数据库。可以吗? 如果它限制每个mysql用户。池连接可以解决这种情况吗?

2 个答案:

答案 0 :(得分:5)

有两个系统变量来控制它们。如the manual中所述:

  
      
  • max_connections

    +----------------------+-----------------------+
    | Command-Line Format  | --max_connections=#   |
    +----------------------+-----------------------+
    | Option-File Format   | max_connections       |
    +----------------------+-----------------------+
    | Option Sets Variable | Yes, max_connections  |
    +----------------------+-----------------------+
    | Variable Name        | max_connections       |
    +----------------------+-----------------------+
    | Variable Scope       | Global                |
    +----------------------+-----------------------+
    | Dynamic Variable     | Yes                   |
    +----------------------+-----------------------+
    |                      | Permitted Values      |
    +                      +---------+-------------+
    |                      | Type    | numeric     |
    +                      +---------+-------------+
    |                      | Default | 151         |
    +                      +---------+-------------+
    |                      | Range   | 1 .. 100000 |
    +----------------------+-----------------------+
    
         

    允许的最大同时客户端连接数。默认情况下,这是151.有关详细信息,请参阅Section C.5.2.7, “Too many connections

         

    增加此值会增加mysqld所需的文件描述符数。有关文件描述符限制的注释,请参阅Section 8.4.3.1, “How MySQL Opens and Closes Tables”

  •   
  • max_user_connections

    +----------------------+---------------------------+
    | Command-Line Format  | --max_user_connections=#  |
    +----------------------+---------------------------+
    | Option-File Format   | max_user_connections      |
    +----------------------+---------------------------+
    | Option Sets Variable | Yes, max_user_connections |
    +----------------------+---------------------------+
    | Variable Name        | max_user_connections      |
    +----------------------+---------------------------+
    | Variable Scope       | Global, Session           |
    +----------------------+---------------------------+
    | Dynamic Variable     | Yes                       |
    +----------------------+---------------------------+
    |                      | Permitted Values          |
    +                      +---------+-----------------+
    |                      | Type    | numeric         |
    +                      +---------+-----------------+
    |                      | Default | 0               |
    +                      +---------+-----------------+
    |                      | Range   | 0 .. 4294967295 |
    +----------------------+---------------------------+
    
         

    允许任何给定MySQL用户帐户的最大并发连接数。值0(默认值)表示“无限制”。

         

    此变量具有可在服务器启动或运行时设置的全局值。它还具有只读会话值,该值指示适用于与当前会话关联的帐户的有效同时连接限制。会话值初始化如下:

         

    如果用户帐户的资源限制为非零MAX_USER_CONNECTIONS,则会话max_user_connections值将设置为该限制。

         

    否则,会话max_user_connections值将设置为全局值。

         

    使用GRANT语句指定帐户资源限制。请参阅Section 6.3.4, “Setting Account Resource Limits”Section 13.7.1.3, “GRANT Syntax”

  •   

答案 1 :(得分:1)

那太疯狂了。每个用户不能拥有1个数据库。这是一个过度杀戮。 (如果您不是托管服务提供商)

无论如何,MySQL建议每台机器不要超过 4096个并发请求。如果你有4096个并发请求,我相信你会遇到许多其他问题而不是数据库。

参考:MySQL Best Pratices