相关推荐recommended
修改MySQL最大连接数 max
作者:mmseoamin日期:2023-12-14

前言

mysql 的默认最大连接数只有100,如果不修改的话,一旦建立的连接数超过这个限制,数据库将拒绝连接请求。如果同时在线的用户数多,将会导致程序异常卡顿。

因此在创建项目后,都必须修改该参数。Mysql支持最大2万条并发连接

查看最大连接数

show variables like '%max_connections%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_connections        | 151   |
| mysqlx_max_connections | 100   |
+------------------------+-------+
2 rows in set (0.01 sec)

可以看到,在MySql8以上,有两个参数都表示了最大连接数,分别是 max_connections 和 mysqlx_max_connections

max_connections 与 mysqlx_max_connections 的区别

在MySQL数据库中,max_connections和mysqlx_max_connections是两个不同的参数,用于控制连接到数据库服务器的最大连接数。

它们的区别如下:

  1. max_connections:这是MySQL数据库服务器的参数,用于控制通过传统的MySQL协议(通常使用标准的MySQL客户端连接)连接到服务器的最大连接数。它指定了服务器可以同时接受的最大客户端连接数量。如果尝试建立的新连接超过这个限制,服务器将拒绝连接请求。这个参数的默认值通常是150。

  2. mysqlx_max_connections:这是MySQL数据库服务器的参数,用于控制通过MySQL X协议(用于MySQL的新的高级协议)连接到服务器的最大连接数。MySQL X协议提供了更现代和强大的功能,比如支持异步查询和事务。mysqlx_max_connections指定了服务器可以同时接受的最大MySQL X连接数。如果尝试建立的新连接超过这个限制,服务器将拒绝连接请求。这个参数的默认值通常是100。

修改最大连接数

下面以 max_connections 为例,修改mysqlx_max_connections 也是一样的,就不赘叙了

临时修改

set global max_connections=5000;

永久修改

使用上面的可以进行临时解决问题,想要一直开启就需要去MySQL下面的my.ini文件里修改 max_connections即可。

CenterOS

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

追加以下内容:

max_connections = 5000

重启 MySQL 数据库

sudo  systemctl restart mysql

openEuler Linux

sudo vim /etc/my.cnf

追加以下内容:

max_connections = 5000

重启 MySQL 数据库

sudo  systemctl restart mysqld

JDBC 连接 MySql

在Java中,使用JDBC(Java Database Connectivity)连接MySQL数据库时,可以使用MySQL协议或MySQL X协议进行连接。下面是使用这两种协议连接MySQL数据库的示例代码:

  1. 使用MySQL协议连接MySQL数据库:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLExample {
    public static void main(String[] args) {
        String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "your-username";
        String password = "your-password";
        try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
            // 在这里可以执行数据库操作
            System.out.println("成功连接到MySQL数据库");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  1. 使用MySQL X协议连接MySQL数据库:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLXExample {
    public static void main(String[] args) {
        String jdbcUrl = "jdbc:mysqlx://localhost:33060/mydatabase";
        String username = "your-username";
        String password = "your-password";
        try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
            // 在这里可以执行数据库操作
            System.out.println("成功连接到MySQL数据库,使用MySQL X协议");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

注意,在使用MySQL X协议连接MySQL数据库之前,需要确保你的MySQL服务器已经启用了X Plugin。此外,你需要使用适当的MySQL JDBC驱动程序版本,以支持MySQL X协议。你可以从MySQL官方网站下载最新版本的MySQL Connector/J驱动程序,并将其包含在你的项目中。

无论使用哪种协议,连接MySQL数据库的基本步骤都是相同的,只需将JDBC连接URL中的协议部分修改为相应的协议即可。

启用 X Plugin

修改MySQL服务器的配置文件。找到MySQL服务器的配置文件(通常是my.cnf或my.ini),并添加以下行来启用X Plugin

[mysqld]
plugin_load_add = mysqlx=mysqlx.so

注意:上述配置适用于Linux上的MySQL服务器。对于Windows上的MySQL服务器,需要将mysqlx=mysqlx.so更改为mysqlx=mysqlx.dll

然后保存配置文件并重启MySQL服务器,以使更改生效

检查X Plugin的状态。你可以使用以下命令登录到MySQL服务器并检查X Plugin的状态:

SHOW PLUGINS

一旦你的MySQL服务器启用了X Plugin,就可以使用MySQL X协议连接到服务器,如前面的示例所示。请确保使用的MySQL JDBC驱动程序版本与X Plugin兼容,以便成功连接和使用MySQL X协议。

总结

  • max_connections控制传统MySQL客户端连接的最大连接数
  • mysqlx_max_connections控制MySQL X协议连接的最大连接数
  • 这两个参数可以独立设置,允许对不同协议的连接数进行不同的限制。