1、存儲引擎mysql
mysql中有多種存儲引擎,通常常見的有三種:redis
MyIsam | InnoDB | Memory | |
用途 | 快讀 | 完整的事務支持 | 內存數據 |
鎖 | 全表鎖定 | 多種隔離級別的行鎖 | 全表鎖定 |
持久性 | 基於表恢復 | 基於日誌的恢復 | 無磁盤I/O,無可持久性 |
事務特性 | 不支持 | 支持 | 不支持sql |
支持索引類型 | 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已經不存在了。緩存
2、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