程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL 句柄數占用過多的解決方法

MySQL 句柄數占用過多的解決方法

編輯:關於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,看來對於MYSQL的配置還是要手工研究,不能完全依賴於自帶的配置工具。

  總結下來,對於innodb類型的庫,將innodb_flush_log_at_trx_commit設置成2,能夠提高MySQL的性能,解決句柄占用過多的問題。

  以上就是解決MySQL句柄占用過多的方法,希望能給大家一個參考,了解更多MySQL語法,大家可以關注《MySQL 5.1參考手冊》,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved