mysql優化調整

mysql調優

慢查詢:認爲定義的,比如超過了1s的查詢,把這個sql語句記錄到一個日誌文件裏,會增加io,debug時候用,一般別開
定義方法:
vim /etc/my.cnf
  log-slow-queries=/tmp/slow.log 慢速日誌存放的位置
   long-query-time=20       超出多長時間算作慢速查詢

 

從四個部分考慮
1網絡
操作系統上優化:
tcp.max_syn_backlog  這個是處於syn_rec狀態
/proc/sys/net/core/somaxconn 
還有配置文件裏的
connect_timeout 連線超時時間
interactive_timeout 連接後什麼都不執行的超時時間

 

2內存
myisam引擎必調

 Key---->Mysam引擎的索引
 Read hit ---->命中率(越高代表着效率很高)
 調整key_buffer
 方法1:
 show variables like '%key%';
 set global key_buffer_size=16777216;
 方法2:必須要重新啓動服務
 vim /etc/my.cnf
 key_buffer_size=16777216

innodb引擎必調
 InnoDB Buffer Pool 巨逼重要 工作中必須調,就是把 ibdata1這個文件緩存到這裏
 Usage 越大越好
 show variables like '%innodb%';
 set global innodb_buffer_pool_size='8388608';
 注:建議大小設置爲整個內存的80%
 Pages 單位:16

Tables 增快表訪問的速度
set global table_cache='128'; 把表的文件描述符寫入到內存中了,下次打開的話可以省略打開文件的過程了

Created Temp 創建臨時表(排序、索引)利用內存來進行這些動作,速度會快,但是消耗內存
tmpdir /tmp/  臨時表創建的位置
tmp_table_size 如果創建臨時表的大小超過32M將會把數據寫入到磁盤中

Threads 線程緩存,增加查找速度
show variables like '%thread%';
set global thread_cache_size='99999999'; 

Connections
Max used  最大連接數 針對機器來說,性能越好可以處理的連接數越大。
show variables like '%max%';
set global max_connections='100'; 

3io
show variables like '%innodb_flush_log%';
 innodb_flush_log_trx_commit
 0 最不安全,但是效率是最高,每隔一秒鐘會把數據寫入到硬盤上,如果斷電或者數據庫服務壞了,數據就丟失了
 1 最安全,數據會時時的寫到硬盤上
 2 先寫到操作系統的內存中,再寫入到磁盤中,mysql進程死了,數據不丟,但是斷電了,數據就丟失了(建議)

 繞過操作系統的緩存,直接將數據寫入到磁盤中,好處是節省了內存
 vim /etc/my.cnf
 innodb_flush_medthod=O_DIRECT
 /etc/init.d/mysqld restart
操作系統上考慮:
不需要 noatime 增加文件描述符 還有


4cpu
主頻高
核心
grub 裏分離一下
taskset 綁定
mysql 使用的是線程,進程只在一個核上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章