mysql性能調優--總括

每張表數據最好不要超過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

http://jeremy.zawodny.com/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  直接拷貝數據文件。


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