mysql效能調優 總括

2021-08-27 19:59:23 字數 2850 閱讀 2044

每張表資料最好不要超過2000w 條資料

超過之後分表儲存,分庫儲存

乙個例項oracle一時開啟乙個資料庫

乙個例項mysql一時開啟多個資料庫

按對資料調優影響從高到低依次為:

資料庫的設計與規劃

資料的引用(sql)

mysql服務優化,記憶體磁碟的使用

作業系統優化

公升級硬體裝置

資料庫的設計與規劃:

事務處理用innodb引擎。

非事務處理用myisam

mysql版本的影響。

盡量採取優化演算法

建立合適的索引

插入,修改,刪除資料的時候,索引是最大的瓶頸。

所以如果要匯入資料的時候就刪除索引。

所用exists少用in

盡量避免使用is null,所以經常不要允許為null,設定預設值。

mysql記憶體配置:

my.ini

query_cache_size:

table_case:

磁碟io規劃:

raid技術:

-raid 0+1

raid 0

raid 5

swap分割槽的使用

-最好使用單獨的raid0 分割槽

磁碟分割槽

--磁碟讀取分流

資料讀寫特別大庫檔案放到多個磁碟上。

乙個庫放在乙個分割槽上。

作業系統的優化

優化網路:

linu 採用bonding技術

優化系統核心:

--優化系統tcp連線

--優化系統開啟檔案的最大限制

關閉不必要的服務

第二章優化mysql服務

show status;

show variables;

show processlist;

show warnings;

show errors;

啟動mysql慢速查詢日誌:

log-slow-queries = /new/log.log

long-query-time=5

log-queries-not-using-indexes mysql4.1以後的版本有效

通過mysqldumpslow命令制定日誌檔案的路徑進行檢視

對查詢進行快取

快取的大小不是越大越好,也不是越少越好。適當最好。

查詢命中率越高越好

對mysql資源進行強制配置:

max_connections //最大連線數 一般1000

wait_timeout //空閒多長時間後斷開鏈結

max_connect_errors //最大的錯誤鏈結數 一般設定為2001

表的告訴快取:

table_cache //快取表的數量

open_tables //已經開啟表的數量

opened_tables //需要開啟表的數量 越大 表示 table_cache 設定的小了

加size表示的空間大小,不加的表示個數

thread_cache

threads_created //執行緒的建立數量,越大表示thread_cache 設定的小了。

關鍵字緩衝區

key_buffer_size

key_read_requests //請求的總數

key_reads //命中磁碟的請求個數

key_read_requests / key_reads = 100/1 表示需要增加key_buffer_zise

key_read_requests / key_reads = 1000/1 表示比key_buffer_size大小比較合適

命中率: (key_read_requests - key_reads) / key_read_requests

臨時表的大小,記憶體區域,用於存放臨時表,不是程式設計師操作的,

是mysql引擎自動的需要建立的。

tmp_table_size

created_tmp_table //建立tmp表的數量

created_temp_disk_table //建立tmp磁碟表的數量,數量不斷增加,表示tmp_table_size

查詢的兩種方式

select_scan

select_range

排序緩衝區

sort_buffer_size

sort_range

sort_rows

sort_merge_passes //次數,磁碟內容合併次數,越大,表示sort_buffer_size需要增加

sort_buffer_size也不是越大越好。

mysql調優工具。

mytop

mytop -u username -p passwor

mysqlard

mysqlreport

mysqlslap 是myslq官方提供的壓力測試工具 mysql 5.1以後。

phpmyadmin

日常維護小技能

安全是第一位。之後再討論效率

myisam備份方法

mysqlhotcopy:拷貝資料檔案到制定的目錄,先鎖著,再解鎖。不適合很繁忙的時候備份

資料不會丟,很方便

mysqldump: 先鎖著,通過sql語句方式,生成sql語句。

最好每張表每張sql,不要乙個庫乙個sql,否則會很大的sql檔案

innodb備份檔案

mysqldump

innodb hot backup 非免費。

二進位制恢復2

二進位制日誌 binlog

-mysqlbinlog

直接備份資料檔案

flush tables with read lock 直接拷貝資料檔案。

mysql效能調優

1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在where子句中對字段進行null判斷,否則會導致引擎放棄使用索引而進行全表掃瞄。3.應盡量避免在where子句中使用 或 操作符,否則會導致引擎放棄使用索引而進行全表掃瞄。4...

Mysql效能調優

mysql 效能調優有很多方面,主要是這幾個方面 1 正規化 是指表的列具有原子性,不可再拆分,只要資料庫是線性的,都自動滿足1nf。2 正規化 表中的紀錄是唯一的。3 正規化 表中資料不應該有冗餘,如果通過某個欄位就能得到跟該字段相關的資訊,就沒必要將這些資訊,再存放到該表中。在3nf中,可能會對...

MySQL效能調優

1 經常用來讀的表使用myisam儲存引擎 2 其餘的表都用innodb儲存引擎 1 在select where order by常涉及到的字段上建立索引 2 where子句中不使用 否則將放棄使用索引進行全表掃瞄 3 盡量避免用null值判斷,否則會全表掃瞄 示例 select id from t...