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