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