最近的项目使用了spring和mysql,但在性能上出了问题,刚开始一直不能找到瓶颈在哪里,就不断的摸索,经过一系列的测试后,确定了在使用spring的transactionnal的注解时,mysql提交事务时花费的时候几乎是用了100ms,这是让人很难接受的。
刚开始怀疑是不是我们的在使用spring的事务管理器上有问题,后来有怀疑是不是对于@Transactional注解的使用上有问题,但是没有得到实质性的突破,终于在今天早上看到了关于mysql的事务优化方面的博客,最后经过测试发现,经过以下做法修改后,性能的提升是显而易见的。
使用以下命令进行修改mysql的配置
show variables like 'innodb_flush_log_at_trx_commit'; set global innodb_flush_log_at_trx_commit = 2; show variables like 'innodb_flush_log_at_trx_commit';
具体解释如下:
innodb_flush_log_at_trx_commit属性主要控制了innodb将log buffer中的数据写入日志文件,并且刷新磁盘的时间点,取值有0、1(mysql默认值)、2。
0:事务提交时,不做日志写入操作,而是每秒钟将log buffer中的日志写入文件并且flush磁盘一次。
1:每秒钟或者事务提交时,都会引起日志写入和flush磁盘操作,这样设计也是最安全的。
2:每次事务提交时,进行日志写入,但此时没有flush磁盘操作,而是在每秒钟时进行flush磁盘操作。
在设置mysql的innodb_flush_log_at_trx_commit属性为2时,每次提交事务时,就没有引起flush磁盘操作,这样的话,就会节省很多时间,我们的项目中平均40ms处理完一次操作,而该操作完了以后会释放事务,如此来说,1s钟内就省去了磁盘刷新的时间。而原来的这种情况下,事务提交一般都要花费40ms的时间,在多并发的情况下,甚至达到了200ms的时间,这是非常可怕的事情,而现在,普通情况下,一次事务提交所花费的时间就基本控制在个位毫秒级别上。
当然查看资料后,将innodb_flush_log_at_trx_commit设置为
0:mysql进程崩溃时,会丢失数据
1:每次事务日志缓冲都会写入磁盘
2:操作系统崩溃、断电情况下,会丢失最后一秒钟内的数据
以上情况需要根据所处的软件环境而定,而我们项目中目前设置为2已经足够了。
开心。。。。。。
相关推荐
MySQL性能提升是一个关键议题,它涉及到多个方面,包括对性能的认识、问题的定位、性能改进、并发控制机制以及性能测试等。在这些方面,楼方鑫等专家分享了许多经验和见解。 首先,讨论了性能提升的必要性和复杂性...
本篇将围绕“MySQL高性能—数据库的性能调优”这一主题,深入探讨如何优化MySQL的性能,提升系统整体效率。 首先,性能优化主要涉及以下几个方面: 1. **查询优化**:高效的SQL查询是性能提升的关键。这包括避免全...
本资料"海量数据性能优化.rar"主要聚焦于如何在大数据环境下提升MySQL的运行效率和响应速度,确保系统的稳定性和可扩展性。下面将详细探讨相关知识点。 1. **索引优化**:索引是提高查询速度的关键。正确使用主键、...
书中阐述了如何通过监控MySQL的性能指标,如QPS(每秒查询量)、TPS(每秒事务处理量)、锁等待时间等,来评估系统健康状况。同时,它也讲解了各种监控工具的使用,如MySQL自带的Performance Schema和第三方工具如...
总的来说,《高性能MySQL》全面介绍了MySQL的各个方面,旨在帮助读者提升数据库的运行效率,解决实际工作中的性能问题。无论你是初学者还是经验丰富的DBA,都能从中受益匪浅。通过学习书中的内容,你将能够更好地...
"高性能MySQL源码"指的是MySQL数据库系统的内部实现细节,通过分析源码,我们可以深入理解其工作原理,优化数据库操作,提升系统性能。源码分析通常涉及以下几个关键知识点: 1. **存储引擎**:MySQL支持多种存储...
- 深入研究Percona Server与XtraDB的特性,了解它们如何进一步提升MySQL性能。 - 探索更多关于数据库调优的知识和技术,如索引优化、查询优化等。 - 关注MySQL社区动态,参与交流讨论,获取最新技术和最佳实践。
《高性能的MySQL中文版》这本书深入探讨了MySQL...总的来说,这本书是提升MySQL性能的宝典,无论你是初学者还是经验丰富的开发者,都能从中获益匪浅。通过阅读和实践,你将能够构建和维护更稳定、更高效的数据库系统。
总之,这份“大牛讲解的MySQL介绍及性能优化PPT”提供了全面的MySQL学习材料,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅,提升你的数据库管理和优化技能。通过深入学习并实践其中的知识,你将能够更好...
书中会深入讲解如何通过优化查询语句、索引设计、存储引擎选择等方式提升MySQL的性能。 3. **索引技术**:索引是提高查询效率的关键,书中的内容可能涵盖B-Tree、Hash、R-Tree等各种索引类型,以及如何创建、管理和...
2. **性能调优**:深入探讨查询优化、索引策略、内存管理、存储引擎的选择以及事务处理性能的提升。 3. **监控和诊断**:介绍如何有效地监控MySQL的性能指标,及时发现和解决问题,以及如何进行性能分析和故障排查...
在《MySQL高性能优化》这本书中,作者深入浅出地探讨了如何最大限度地提升MySQL数据库的运行效率,确保系统的高可用性和高性能。 一、索引优化 索引是MySQL数据库性能的关键因素。正确地创建和使用索引可以显著提高...
MySQL性能优化是提升数据库响应速度和系统整体性能的关键步骤。以下是一些常见的MySQL性能优化策略: 1. **索引优化**:合理创建和使用索引可以显著提高查询速度。对于经常出现在WHERE子句中的列,应考虑创建索引。...
本篇文章主要探究了在数据交换场景下,如何从表结构、索引、数据形态等方面有效提升批量写入 MySQL 的性能。 一、one_value vs multiple_value 在批量写入性能测试中,我们首先探究了 one_value 和 multiple_value...
4. 表结构优化:选择适合的数据类型,合理设置字段长度,使用合适的数据存储引擎(如InnoDB用于事务处理,MyISAM用于读密集型应用),都能提升性能。 5. 缓存机制:MySQL的查询缓存可以加速重复查询,但可能不适用...
总的来说,"mysql调优与性能设计"这个资源涵盖了从SQL优化、配置调整、架构设计到监控分析的全方位知识,对于想要提升MySQL性能的专业人士来说,是一份非常有价值的参考资料。通过深入学习和实践,读者可以掌握提高...
- 查询优化:通过索引、查询结构优化和查询缓存来提升查询性能。 - 系统参数调优:调整MySQL服务器的配置参数,如缓冲池大小、线程池大小等,以适应不同的工作负载。 - 表设计最佳实践:避免数据冗余,合理设计...
这本书的第三版深入探讨了MySQL的各种方面,包括事务处理、存储引擎、主从复制等关键主题,旨在帮助读者构建和维护高性能的数据库系统。 1. **MySQL事务**:MySQL支持ACID(原子性、一致性、隔离性和持久性)事务,...