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
投稿

猜你喜欢

  • Python使用Web框架Flask开发项目

    2021-07-08 20:08:56
  • 使用python 写一个静态服务(实战)

    2023-09-29 15:57:25
  • Python彻底删除文件夹及其子文件方式

    2022-07-27 04:18:53
  • MySQL数据库21条最佳性能优化经验

    2024-01-14 13:17:11
  • Python使用OpenCV进行标定

    2022-08-17 15:05:33
  • python pyinstaller 加载ui路径方法

    2023-06-12 23:27:20
  • python编程开发之textwrap文本样式处理技巧

    2022-03-20 18:48:26
  • python requests模拟登陆github的实现方法

    2022-10-05 21:37:48
  • Oracle 常用的SQL语句

    2024-01-17 08:55:26
  • 页面重构中的组件制作要点

    2009-10-25 13:06:00
  • Python递归函数特点及原理解析

    2023-12-02 19:40:40
  • python实现ip代理池功能示例

    2023-07-30 16:36:06
  • 用Python编写个解释器实现方法接受

    2023-01-11 15:50:08
  • python网络爬虫之模拟登录 自动获取cookie值 验证码识别的具体实现

    2023-10-08 03:00:37
  • 举例讲解Python的Tornado框架实现数据可视化的教程

    2022-01-16 23:56:52
  • Python实现的扫码工具居然这么好用!

    2022-12-13 19:54:03
  • Python虚拟环境的创建和包下载过程分析

    2023-01-02 12:46:10
  • python破解WiFi教程代码,Python蹭网原理讲解

    2022-09-05 20:14:43
  • 基于numpy中数组元素的切片复制方法

    2023-07-24 03:14:41
  • python内置数据类型之列表操作

    2023-04-08 02:17:36
  • asp之家 网络编程 m.aspxhome.com