1. 程式人生 > >小菜鳥mysql優化解決方案

小菜鳥mysql優化解決方案

mysql優化

根據小菜鳥的個人習慣,自己的編寫的一套MYSQL優化方案,感覺還是有點兒菜,望大家諒解,不足之處,請大神們互動!

#mysql優化解決方案


#公共參數默認值:

max_connections = 151

#同事處理多大連接數,推薦設置最大連接數是上限連接數的80%左右

sort_buffer_size = 2M

#查詢排序時緩沖區大小,只對order by和group by起作用,可增大此值為16M

open_files_limit = 1024

#打開文件數限制,如果show global status like ‘open_files’ 查看的值等於或者大於open_files_limit值時

#程序會無法連接數據庫或卡死



MyISAM參數默認值:

key_buffer_size = 16M

#索引緩存區大小,一般設置物理內存的30-40%

read_buffer_size = 128k

#讀操作緩存區大小,推薦設置16M或32M

query_cache_type = ON

#打開查詢緩存功能

query_cache_limit = 1M

#查詢緩存限制,只有1M以下查詢結果才會被緩存,以免結果數據較大把緩存池覆蓋

query_cache_size = 16M

#查看緩存區大小,用於緩存SELECT查詢結果,下一次有同樣SELECT查詢將直接從緩存池返回結果,可適當成倍增加此值


InnoDB參數默認值:

innodb_buffer_pool_size = 128M

#索引和數據緩沖區大小,一般設置物理內存的60%-70%

innodb_buffer_pool_instances = 1

#緩沖池實例個數,推薦設置4個或8個

innodb_flush_log_at_trx_commit = 1

#關鍵參數,0代表大約每秒寫入到日誌並同步到磁盤,數據庫故障會丟失1秒左右事務數據。1為每執行一條SQL後寫入到日誌並同步到磁盤,I/O開銷大,執行完SQL要等待日誌讀寫,效率低。2代表只把日誌寫入到系統緩存區,再每秒同步到磁盤,效率很高,如果服務器故障,才會丟失事務數據。對數據安全性要求不是很高的推薦設置2,性能高,修改後效果明顯。

innodb_file_per_table = OFF

#默認是共享表空間,共享表空間idbdata文件不斷增大,影響一定的I/O性能。推薦開啟獨立表空間模式,每個表的索引和數據都存在自己獨立的表空間中,可以實現單表在不同數據庫中移動。

innodb_log_buffer_size = 8M

#日誌緩沖區大小,由於日誌最長每秒鐘刷新一次,所以一般不用超過16M



#系統內核優化

net.ipv4.tcp_fin_timeout = 30

#TIME_WAIT超時時間,默認是60s

net.ipv4.tcp_tw_reuse = 1

#1表示開啟復用,允許TIME_WAIT socket重新用於新的TCP連接,0表示關閉

net.ipv4.tcp_tw_recycle = 1

#1表示開啟TIME_WAIT socket快速回收,0表示關閉

net.ipv4.tcp_max_tw_buckets = 4096

#系統保持TIME_WAIT socket最大數量,如果超出這個數,系統將隨機清除一些TIME_WAIT並打印警告信息

net.ipv4.tcp_max_syn_backlog = 4096

#進入SYN隊列最大長度,加大隊列長度可容納更多的等待連接



#在linux系統中,如果進程打開的文件句柄數量超過系統默認值1024,就會提示“too many files open”信息,所以要調整打開文件句柄限制。

# vi /etc/security/limits.conf #加入以下配置,*代表所有用戶,也可以指定用戶,重啟系統生效

* soft nofile 65535

* hard nofile 65535

# ulimit -SHn 65535 #立刻生效


本文出自 “小菜鳥” 博客,請務必保留此出處http://baishuchao.blog.51cto.com/12918589/1927583

小菜鳥mysql優化解決方案