mysql伺服器和配置優化

奮程式序猿發表於2016-12-12

一、儲存引擎

mysql中有多種儲存引擎,一般常見的有三種:

  MyIsam InnoDB Memory
用途 快讀 完整的事務支援 記憶體資料
全表鎖定 多種隔離級別的行鎖 全表鎖定
永續性 基於表恢復 基於日誌的恢復 無磁碟I/O,無可永續性
事務特性 不支援 支援

不支援

支援索引型別 B-tree/FullText/R-tree Hash/B-tree Hash/B-tree

    

  

  

  

  

  

  

  

通常的觀點是MyISAM 注重效能,InnoDB注重事務,所以一邊使用MyISAM類的表做非事務型的業務。

這種觀點是由於早期InnoDB引擎還不成熟,而事實上並不是這樣的。mysql在高併發下的效能瓶頸很明顯,主要原因就是鎖定機制導致的堵塞。而InnoDB在鎖定機制上採用了行級鎖,不同於MyISAM的表級鎖,行級鎖在鎖定上帶來的消耗大於表級鎖,但是在系統併發訪問較高時,InnoDB整體的效能高於MyISAM。同時InnoDB的索引不僅快取索引本身,也快取資料,說以InnoDB需要更大的記憶體,在現在來說記憶體很廉價。而且在MYSQL8.0 中 MyISAM已經不存在了。

二、mysql伺服器調整優化

關閉不必要的二進位制日誌和慢查詢日誌,僅在記憶體足夠或開發除錯時開啟。使用下來語句檢視是否開啟:

show variables like '%slow%';

使用下列語句檢視慢查詢條數:

show global status like '%slow%';

慢查詢會消耗過度消耗CPU,可以間歇性開啟慢查詢日誌來定位新能瓶頸。

適度使用query cache

增加mysql允許的最大連線數。檢視mysql最大連線數:

show variables like 'max_connections';

對於InnoDB儲存引擎,需要安裝伺服器記憶體來設定innodb_buffer_pool_size一般是作業系統記憶體的70%-80%最佳。

定期的執行optimize table tableName 進行碎片整理 ,或者在大量刪除後進行。

對資料庫進行分割槽,分表操作。

使用Nosql輔助,如:Memcached,redis。

mysql最大連線數修改方法:

方法一:進入MYSQL安裝目錄 開啟MYSQL配置檔案 my.ini 或 my.cnf查詢 max_connections=100   修改為 max_connections=(數字) 服務裡重起MYSQL即可

方法二:set GLOBAL max_connections=200

mysql修改innodb_buffer_pool_size

進入MYSQL安裝目錄 開啟MYSQL配置檔案 my.ini 或 my.cnf 查詢  innodb_buffer_pool_size  這一項設定 修改為 例如:   innodb_buffer_pool_size = 6G

增加mysql配置中的buffer和cache的數值

產考文章:

http://www.jb51.net/article/48082.htm

http://blog.csdn.net/cenfei78325747/article/details/7861454

 

相關文章