MySQL 句柄数占用过多的解决方法

作者:快乐无极 时间:2024-01-29 12:31:06 

在Windows下安装MySQL ,用了官方的配置向导生成了my.ini,本以为很安稳了,谁知十多个小时过去之后,系统响应非常慢,看资源管理器的性能卡,发现句柄数竟然达到了10万!怪不得无论使用什么程序都卡得很。

网上搜索一下,大概是说 innodb_buffer_pool_size 这个默认的8M太大,但我已经skip-innodb了啊。

后来又看到一个设置innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit  (这个很管用)

抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据。

后来设置成了innodb_flush_log_at_trx_commit = 2。

重启MYSQL服务,的确好了许多,句柄数最终保持在2万左右,处于稳定状态,其它程序快了许多。

看来在配置文件中innodb即使skip掉了,也仍然在使用系统中的内存、磁盘IO,看来对于MYSQL的配置还是要手工研究,不能完全依赖于自带的配置工具。

总结下来,对于innodb类型的库,将innodb_flush_log_at_trx_commit设置成2,能够提高MySQL的性能,解决句柄占用过多的问题。

标签:MySQL
0
投稿

猜你喜欢

  • 高效优化博客的用户阅读体验

    2009-06-16 18:09:00
  • 关于对Java正则表达式"\\\\"的理解

    2023-06-24 07:23:02
  • SQL实现LeetCode(185.系里前三高薪水)

    2024-01-18 19:12:22
  • Python接口测试数据库封装实现原理

    2024-01-27 11:19:46
  • 一文详解Golang中net/http包的实现原理

    2024-05-28 15:23:08
  • scrapy-redis分布式爬虫的搭建过程(理论篇)

    2022-04-25 20:49:25
  • python使用xlrd模块读写Excel文件的方法

    2022-02-14 16:54:55
  • Python 获取主机ip与hostname的方法

    2021-05-13 09:30:30
  • 对python操作kafka写入json数据的简单demo分享

    2023-05-04 21:24:08
  • MySQL 查询某个字段不重复的所有记录

    2024-01-25 09:22:58
  • vue3中给数组赋值丢失响应式的解决

    2024-05-22 10:44:41
  • Layer UI表格列日期格式化及取消自动填充日期的实现方法

    2024-04-22 13:02:22
  • Python最火、R极具潜力 2017机器学习调查报告

    2023-10-10 01:40:47
  • Golang 使用gorm添加数据库排他锁,for update

    2024-01-29 09:34:53
  • vue2.x集成百度UEditor富文本编辑器的方法

    2024-05-28 15:47:59
  • python定时复制远程文件夹中所有文件

    2023-08-17 17:55:32
  • django实现前后台交互实例

    2022-04-12 20:53:33
  • Python学习之集合set

    2021-07-25 10:44:34
  • Flask使用SQLAlchemy实现持久化数据

    2023-02-23 07:47:19
  • Python使用chardet判断字符编码

    2021-05-14 03:03:52
  • asp之家 网络编程 m.aspxhome.com