my.cnf参数配置实现InnoDB引擎性能优化

发布时间 - 2026-01-11 01:12:49    点击率:

在网上看了无数的my.cnf的配置,大多数提到的配置无外乎这几个:

1. innodb_buffer_pool_size
2. innodb_log_file_size
3. innodb_log_buffer_size
4. innodb_flush_log_at_trx_commit

然后自己写了两个例子,一个单线程的,一个多线程的来通过改变配置参数来测试是否提高了性能。结果是只有innodb_flush_log_at_trx_commit可以提高性能,对于1,2,3参数无论是开其中某一个,还是三个同时调节都没有影响到测试性能。我想了下,可能是我的测试数据量还不够大造成的,后续有条件了再更大的数据量测试一下这3个参数。

这里详细说一下innodb_flush_log_at_trx_commit:

如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去。
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file。但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

结果

当设置为0,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。
当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

注意:由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘)操作”并不是保证100%的“每秒”。

结论:innodb_flush_log_at_trx_commit设置为0或者2的时候速度差不多,两者都比设置为1的时候快很多。

这里又让我想到了InnoDB和MyISAM引擎的区别,InnoDB的优势在于并发处理情况下比MyISAM快。而我的线程池数量是根据cpu的线程数来设定的,然后我把线程池的数量设置比cpu线程数大,更大,再大,结果我的测试程序性能又提高了,我醉了,原来是我对线程池的理解太浅薄了。线程池的最优大小


# innodb引擎优化  # innodb  # 性能优化  # my.cnf  # MySQL5.6.17数据库安装 如何配置My.ini文件  # MySql 5.7.20安装及data和my.ini文件的配置  # MySQL 5.6 & 5.7最优配置文件模板(my.ini)  # mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)  # MySQL优化配置文件my.ini(discuz论坛)  # 对MySQL配置参数 my.ini/my.cnf的详细解析  # Mysql my.ini 配置文件详解  # MySQL中配置文件my.cnf因权限问题导致无法启动的解决方法  # mysql 查看当前使用的配置文件my.cnf的方法(推荐)  # MySQL修改my.cnf配置不生效的解决方法  # MySQL 5.5.x my.cnf参数配置优化详解  # MySQL配置文件my.cnf优化详解(mysql5.5)  # MySQL性能优化之路---修改配置文件my.cnf  # MariaDB(Mysql分支)my.cnf配置文件中文注释版  # MySQL配置文件my.cnf参数优化和中文详解  # MySQL配置文件my.cnf中文详解附mysql性能优化方法分享  # MySQL配置文件my.cnf中文版对照  # MySQL 配置文件my.cnf 例子最详细翻译  # MySql优化之InnoDB  # 4GB内存  # 多查询的my.ini中文配置方案详解  # 设置为  # 更大  # 上一  # 情况下  # 会把  # 提高了  # 我想  # 看了  # 最多  # 不太  # 模式下  # 无外乎  # 都没  # 还不  # 我对  # 我把  # 想了  # 写了  # 中去  # 这几个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: ,怎么在广州志愿者网站注册?  原生JS获取元素集合的子元素宽度实例  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  JS去除重复并统计数量的实现方法  JavaScript中的标签模板是什么_它如何扩展字符串功能  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  浅谈Javascript中的Label语句  android nfc常用标签读取总结  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  ,交易猫的商品怎么发布到网站上去?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  免费视频制作网站,更新又快又好的免费电影网站?  如何彻底删除建站之星生成的Banner?  Android 常见的图片加载框架详细介绍  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何在建站之星绑定自定义域名?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何在建站主机中优化服务器配置?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何续费美橙建站之星域名及服务?  如何用低价快速搭建高质量网站?  浅析上传头像示例及其注意事项  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  如何挑选高效建站主机与优质域名?  无锡营销型网站制作公司,无锡网选车牌流程?  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  网站制作软件有哪些,制图软件有哪些?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  浅谈javascript alert和confirm的美化  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Laravel定时任务怎么设置_Laravel Crontab调度器配置  微信小程序 HTTPS报错整理常见问题及解决方案  如何在VPS电脑上快速搭建网站?  智能起名网站制作软件有哪些,制作logo的软件?  如何在IIS管理器中快速创建并配置网站?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  百度浏览器如何管理插件 百度浏览器插件管理方法  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  jQuery中的100个技巧汇总  实例解析Array和String方法  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  网站页面设计需要考虑到这些问题