最近的项目使用了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已经足够了。
开心。。。。。。
相关推荐
01-MySQL优化大的思路.wmv 02-Awk简洁入门.wmv 03-观察服务器周期性变化.wmv 04-观察MySQL进程状态.wmv 05-列选取原则.wmv 06-多列索引生效规则.wmv 07-多列索引实验.wmv 08-商城多列索引实验.wmv ...32-事务讲解.wmv
《mysql管理之道:性能调优、高可用与监控》由资深mysql专家撰写,以最新的mysql版本为基础,以构建高性能mysql服务器为核心,从故障诊断、表设计、sql优化、性能参数调优、mydumper逻辑、xtrabackup热备份与恢复、...
MySQL性能优化 MySQL性能优化就是通过合理安排资源,调整系统参数使MySQL运行更快、更节省资源。MySQL性能优化包括查询速度优化、更新速度优化、MySQL服务器优化等。本篇博客将从查询优化、数据库结构优化、MySQL...
通过改进 InnoDB 存储引擎来提升事务吞吐量 通过改进优化器来缩短查询执行时间和增强诊断 通过在线DDL/模式更改来提高应用程序可用性 支持通过 Memcached API 对 InnoDB 进行 NoSQL 访问,从而使开发人员能灵活的以...
在性能优化方面,PHP支持 opcode 缓存(如APC、OpCache)以加速脚本执行,可通过配置调整、代码优化、使用缓存技术等手段提升应用性能。近年来,PHP持续进行性能改进与新特性的引入,如PHP 7系列版本在速度上有了...
高性能:MySQL 5.7.19 通过优化查询执行计划、增强索引算法和提升存储引擎等方面,提供了更高的查询性能。 可靠性:MySQL 5.7.19 引入了更强大的事务支持和故障恢复机制,确保数据的一致性和可靠性。 安全性:MySQL ...
MySQL 是一种开源的关系型数据库管理系统,广泛应用于各种规模的应用程序中。...除此之外,我们还将讨论 MySQL 的事务处理、备份与恢复、安全性等主题,帮助读者全面了解 MySQL 数据库管理的各个方面。
10道精选MySQL面试题: 请简述B树和B+树在MySQL数据库索引中的应用,并解释为什么InnoDB存储引擎选择使用B+树...在哪些场景下使用分区表能提升查询或写入性能? 如果业务需要进行水平拆分,你将如何设计分库分表策略?
MySQL8索引篇:性能提升了100%!! 卧槽,安装完MySQL竟然提示数据表不存在!! 冰河视频聊架构:三分钟带你彻底掌握MySQL Undo Log和MVCC机制!! 一文搞懂select语句在MySQL中的执行流程! 小伙伴们说要看MySQL...
Java + mysql 学生宿舍管理系统 Java和MySQL的结合在...5. **性能优越**:Java作为一种高性能的编程语言,与MySQL搭配使用时可以快速高效地进行数据操作和处理,提升应用的性能。 6. **JDBC支持**:Java提供了......
mysql 原理 将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。...兼容各大框架,无缝提升性能
模块四热点问题解答26讲单例模式:如何创建单一对象优化系统性能27讲原型模式与享元模式:提升系统性能的利器32讲MySQL调优之SQL语句:如何写出高性能SQL语句33讲MySQL调优之事务:高并发场景下的数据库事务调优34讲...
mysql合并插入性能测试测试数据Mysql合并插入可以带来*10的吞吐提升,而事务提交没有明显的收益。下面是在一台普通MYSQL机型下的TPS实测数据:[root@10-9-136-206 mysql-bulk-insert]# ...
而由于InnoDB是一个健壮的事务型存储引擎,已经有10多年的历史,一些重量级的互联网公司(Yahoo,Google Netease ,Taobao)也经常使用 我的日常工作也经常接触InnoDB,现在就InnoDB一部分可以改善性能的参数列举 1....
数据库管理员:需要优化多表查询以提升数据库性能。 后端开发者:在应用开发中需要执行复杂的多表查询。 数据分析师:需要从多个数据源汇总和分析数据。 数据库开发者:正在设计复杂的数据库查询以解决业务问题。 ...
MySQL面试题资源是一份精选的面试题目录,涵盖了MySQL的各个方面,包括查询语句、索引、事务、性能优化等。通过答题和参考详细的解析,您可以提升MySQL技能,备战面试,同时深入理解MySQL的内部工作原理。
MySQL面试题资源是一份精选的面试题目录,涵盖了MySQL的各个方面,包括查询语句、索引、事务、性能优化等。通过答题和参考详细的解析,您可以提升MySQL技能,备战面试,同时深入理解MySQL的内部工作原理。
MySQL面试题资源是一份精选的面试题目录,涵盖了MySQL的各个方面,包括查询语句、索引、事务、性能优化等。通过答题和参考详细的解析,您可以提升MySQL技能,备战面试,同时深入理解MySQL的内部工作原理。
MySQL面试题资源是一份精选的面试题目录,涵盖了MySQL的各个方面,包括查询语句、索引、事务、性能优化等。通过答题和参考详细的解析,您可以提升MySQL技能,备战面试,同时深入理解MySQL的内部工作原理。