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
在MySQL数据库中,max_connections和mysqlx_max_connections是两个不同的参数,用于控制连接到数据库服务器的最大连接数。
它们的区别如下:
max_connections:这是MySQL数据库服务器的参数,用于控制通过传统的MySQL协议(通常使用标准的MySQL客户端连接)连接到服务器的最大连接数。它指定了服务器可以同时接受的最大客户端连接数量。如果尝试建立的新连接超过这个限制,服务器将拒绝连接请求。这个参数的默认值通常是150。
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即可。
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
追加以下内容:
max_connections = 5000
重启 MySQL 数据库
sudo systemctl restart mysql
sudo vim /etc/my.cnf
追加以下内容:
max_connections = 5000
重启 MySQL 数据库
sudo systemctl restart mysqld
在Java中,使用JDBC(Java Database Connectivity)连接MySQL数据库时,可以使用MySQL协议或MySQL X协议进行连接。下面是使用这两种协议连接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(); } } }
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中的协议部分修改为相应的协议即可。
修改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协议。