MySQL性能优化/调优:默认配置的修改

max_connections
  最大并发连接数。当MySQL的并发连接达到这个设定值时,新的连接将会被拒绝。当发现MySQL有能力处理更多的并发的时候, 建议调大这个值,相应给服务器带来更高的负载(CPU/IO/内存)。
  默认值:100, 参考设置:900

back_log
  TCP/IP连接队列的最大值。当MySQL同时有大量连接请求的时候,MySQL会尝试用当前现有的线程处理这些请求,如果处理不过来,MySQL会把连接先放到一个队列里面,然后起新的线程处理。这个过程会很快, 但是并发请求很多的话,需要调高这个值,否则新来的连接请求会被拒绝。在一次压测的时候发现客户端返回大量的“Lost connection to MySQL”, 就是因为back_log的默认值太小导致的。增大这个值会增大CPU负载并消耗更多的内存。
  默认值:50, 参考设置:200

skip-name-resolve
  关闭反向域名解析。MySQL默认会对每个客户端连接作反向域名解析,强烈建议关闭反向域名解析。关闭的方法是在my.cnf里面加一行skip-name-resolve

innodb_file_per_table
如果使用innodb, 强烈建议打开这个设置,否则所有的innodb表共享一个文件,并且这个文件的大小不会因为表数据的减少而减小,时间长了会把磁盘搞爆,这是mysql的一个bug:http://bugs.mysql.com/bug.php?id=1341

max_connect_errors
  当客户端连接服务端超时(超过connect_timeout), 服务端就会给这个客户端记录一次error,当出错的次数达到max_connect_errors的时候,这个客户端就会被锁定。除非执行FLUSH HOSTS命令。绝对是个地雷!
  默认值:10, 参考设置:1844674407370954751(能设多大,设多大)

connect_timeout
  连接超时的秒数。
  默认值:5, 参考设置:15
  
slave_net_timeout
  MySQL主从复制的时候, 当Master和Slave之间的网络中断,但是Master和Slave无法察觉的情况下(比如防火墙或者路由问题)。Slave会等待slave_net_timeout设置的秒数后,才能认为网络出现故障,然后才会重连并且追赶这段时间主库的数据。默认是3600秒,相信一个小时之后,黄花菜都凉了。
  默认值:3600, 参考设置:30

wait_timeout
  连接过期秒数。当一个连接SLEEP超过wait_timeout秒后,MySQL服务端会中断这个连接。这个值设置的过长有可能会导致大量的SLEEP链接占用系统资源,过小会导致“MySQL has gone away”的错误。
  默认值:28800, 参考设置:30

key_buffer
  主键缓存。如果发现有大量的slow log,可以尝试调高这个值,相应会带来更高的内存开销。

table_cache
  给经常访问的表分配的内存。调大这个值,一般情况下可以降低磁盘IO, 但是相应会占用更多的内存。

配置的查看

mysql> show variables like "max_%";
+----------------------------+----------------------+
| Variable_name              | Value                |
+----------------------------+----------------------+
| max_allowed_packet         | 31457280             |
| max_binlog_cache_size      | 18446744073709547520 |
| max_binlog_size            | 1073741824           |
| max_connect_errors         | 10                   |
| max_connections            | 100                  |
| max_delayed_threads        | 20                   |
| max_error_count            | 64                   |
| max_heap_table_size        | 16777216             |
| max_insert_delayed_threads | 20                   |
| max_join_size              | 18446744073709551615 |
| max_length_for_sort_data   | 1024                 |
| max_prepared_stmt_count    | 16382                |
| max_relay_log_size         | 0                    |
| max_seeks_for_key          | 18446744073709551615 |
| max_sort_length            | 1024                 |
| max_sp_recursion_depth     | 0                    |
| max_tmp_tables             | 32                   |
| max_user_connections       | 0                    |
| max_write_lock_count       | 18446744073709551615 |
+----------------------------+----------------------+

配置的修改
动态变量可以在MySQL命令行里面设置:

mysql> set global max_connections = 1600;
Query OK, 0 rows affected (0.02 sec)

非动态变量,比如back_log只能在my.cnf里面修改,修改后重启MySQL才能生效:

微信扫码订阅
UP更新不错过~
关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<h3>回答1:</h3><br/>这个错误提示是因为在连接MySQL数据库时,Java程序找不到合适的驱动程序。需要在程序中添加MySQL的驱动程序,例如: Class.forName("com.mysql.jdbc.Driver"); 或者使用JDBC4.0自动加载驱动程序的方式: DriverManager.registerDriver(new com.mysql.jdbc.Driver()); 同时,还需要确保MySQL的驱动程序已经添加到项目的classpath中。 <h3>回答2:</h3><br/>no suitable driver found for jdbc:mysql://localhost:3306 这个错误是在使用Java程序连接数据库时出现的。通常情况下,这个错误是因为没有正确配置JDBC驱动程序导致的。下面是必要的解决方法: 第一步:确保已经正确安装MySQL 首先要确定已经正确的安装了MySQL数据库。 在安装MySQL时,应该会将JDBC驱动程序的.JAR文件自动拷贝到Java的类路径下。 如果您忘记了这个步骤,可以在MySQL安装目录下的lib目录中查找,找到一个名称为mysql-connector-java.jar(JDBC驱动程序的名称可能有所不同)的JDBC驱动程序。确保这个文件被复制到了Java的类路径下。 第二步:将JDBC驱动程序配置到项目中 下面的代码示例是连接MySQL数据库的Java程序示例。请确保这个类是被正确的配置。 ``` import java.sql.*; public class DatabaseSample { public static void main(String[] args) { Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/testDB", "root", "password"); if (connection != null) { System.out.println("Successfully connected to the database"); } } catch (SQLException e) { System.out.println("Error connecting to the database"); e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { if(connection != null) connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 在这个示例中,我们使用了Class.forName()方法加载JDBC驱动程序类,这个是必要的。 如果没有正确加载JDBC驱动程序,产生的错误实际会是ClassNotFoundException。 第三步:检查JDBC连接URL 确保JDBC连接URL正确。通常,JDBC的URL格式是这样的:jdbc:mysql://[host][:port]/[database]。 在这个示例中,我们使用的JDBC连接URL是"jdbc:mysql://localhost:3306/testDB"。 确保您的JDBC URL中使用了正确的主机地址,端口号以及数据库名称。 在实际使用中,我们还需要提高Java和MySQL数据库之间连接的安全性,以及避免出现一些常见的错误。为此,我们需要使用数据库连接池,数据库连接池实现相对比较简单,并且具有很高的灵活性,可以有效提高应用程序对数据库的访问效率。 <h3>回答3:</h3><br/>在使用JDBC连接MySQL数据库时,当出现“no suitable driver found for jdbc:mysql://localhost:3306”错误时,一般是由于以下原因所导致的: 1.没有将MySQL的JDBC驱动包导入项目中。在使用JDBC连接MySQL数据库时,需要下载相应的JDBC驱动包,并将其导入项目中。如果没有导入驱动包,程序就会出现“no suitable driver found for jdbc:mysql://localhost:3306”错误。 2.JDBC驱动包版本不匹配。MySQL数据库的不同版本需要使用不同版本的JDBC驱动包。如果使用的JDBC驱动包版本与MySQL数据库版本不相符,也会导致出现“no suitable driver found for jdbc:mysql://localhost:3306”错误。 3.连接MySQL数据库时的URL地址填写错误。在使用JDBC连接MySQL数据库时,需要在URL中指定数据库的名称、地址以及端口号等信息。如果URL填写错误,程序也会出现“no suitable driver found for jdbc:mysql://localhost:3306”错误。 解决这个问题的方法如下: 1.将MySQL的JDBC驱动包导入项目中。可以在MySQL官网上下载JDBC驱动包,也可以在maven仓库中查找相应的依赖。 2.确保JDBC驱动包版本与MySQL数据库版本一致。可以在MySQL官网上查找相应版本号的JDBC驱动包。 3.检查连接MySQL数据库时的URL地址是否正确。URL需要包含正确的数据库名称、地址以及端口号等信息。 最后,需要注意的是,当出现“no suitable driver found for jdbc:mysql://localhost:3306”错误时,需要先检查以上三点是否都无误,如果还是无法解决,可以考虑检查MySQL数据库是否启动、网络连接是否正常等其他可能导致问题的因素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值