mysql句柄数是什么,mysql句柄数占用过多解决方法

发布时间:2020-08-19编辑:脚本学堂
有关mysql句柄数占用过多问题的解决方法,通过设置innodb_flush_log_at_trx_commit的值,可有效处理mysql打开的句柄数太多的问题,需要的朋友参考下。

在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,这点应当注意。