每張表資料最好不要超過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...