MySQL 句柄數(shù)占用過多的解決方法
在Windows下安裝MySQL ,用了官方的配置向?qū)闪薽y.ini,本以為很安穩(wěn)了,誰知十多個小時過去之后,系統(tǒng)響應非常慢,看資源管理器的性能卡,發(fā)現(xiàn)句柄數(shù)竟然達到了10萬!怪不得無論使用什么程序都卡得很。
網(wǎng)上搜索一下,大概是說 innodb_buffer_pool_size 這個默認的8M太大,但我已經(jīng)skip-innodb了啊。
后來又看到一個設置innodb_flush_log_at_trx_commit
innodb_flush_log_at_trx_commit (這個很管用)
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了調(diào)整這個值。默認值1的意思是每一次事務提交或事務外的指令都需要把日志寫入(flush)硬盤,這是很費時的。特別是使用電池供電緩存(Battery backed up cache)時。設成2對于很多運用,特別是從MyISAM表轉(zhuǎn)過來的是可以的,它的意思是不寫入硬盤而是寫入系統(tǒng)緩存。日志仍然會每秒flush到硬盤,所以你一般不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即使MySQL掛了也可能會丟失事務的數(shù)據(jù)。而值2只會在整個操作系統(tǒng)掛了時才可能丟數(shù)據(jù)。
后來設置成了innodb_flush_log_at_trx_commit = 2。
重啟MYSQL服務,的確好了許多,句柄數(shù)最終保持在2萬左右,處于穩(wěn)定狀態(tài),其它程序快了許多。
看來在配置文件中innodb即使skip掉了,也仍然在使用系統(tǒng)中的內(nèi)存、磁盤IO,看來對于MYSQL的配置還是要手工研究,不能完全依賴于自帶的配置工具。
總結(jié)下來,對于innodb類型的庫,將innodb_flush_log_at_trx_commit設置成2,能夠提高MySQL的性能,解決句柄占用過多的問題。
以上就是解決MySQL句柄占用過多的方法,希望能給大家一個參考,了解更多MySQL語法,大家可以關注《MySQL 5.1參考手冊》,也希望大家多多支持腳本之家。
相關文章
MySQL5.6主從復制(mysql數(shù)據(jù)同步配置)
這篇文章主要介紹了MySQL5.6主從復制也就是mysql數(shù)據(jù)同步配置方法,需要的朋友可以參考下2016-11-11Mysql Binlog快速遍歷搜索記錄及binlog數(shù)據(jù)查看的方法
這篇文章主要介紹了Mysql Binlog快速遍歷搜索記錄及binlog數(shù)據(jù)查看的方法的相關資料,需要的朋友可以參考下2016-01-01MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
這篇文章主要介紹了MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解,THREAD_CACHE是Mysql的連接池,table_cache指定表高速緩存的大小,需要的朋友可以參考下2014-07-07