1、軟優(yōu)化
1.1 EXPLAIN或DESC命令
使用該命令分析一條查詢語句的執(zhí)行信息椰憋,其中會(huì)顯示索引和查詢數(shù)據(jù)讀取條數(shù)等信息厅克。也可使用它分析一條查詢語句執(zhí)行的信息,其中會(huì)顯示索引(key)和查詢數(shù)據(jù)讀取數(shù)據(jù)條數(shù)等信息橙依。
1.2 優(yōu)化子查詢(join)
使用join代替子查詢证舟,子查詢嵌套循環(huán)硕旗,嵌套查詢時(shí)會(huì)建立一張臨時(shí)表,臨時(shí)表的建立和刪除會(huì)有較大的系統(tǒng)開銷女责,而連接查詢不會(huì)創(chuàng)建臨時(shí)表漆枚,因此效率比嵌套子查詢高。
1.3 使用索引
創(chuàng)建索引抵知、使用索引墙基。創(chuàng)建后可以使用profile查看執(zhí)行時(shí)間。
創(chuàng)建索引:create index 索引名 from 表名(列名)刷喜。
詳情參考:https://www.cnblogs.com/xu-xiaofeng/p/7673776.html
1.4 分解表
字段較多的表残制,若某些字段使用頻率較低,將其分離出來從而形成新的表吱肌。
1.5 中間表
大量連接查詢的表可以創(chuàng)建中間表痘拆,從而減少在查詢時(shí)造成的連接耗時(shí)。
1.6 增加冗余字段
減少連接查詢以提高效率氮墨。
2、硬優(yōu)化
2.1 硬件三件套
配置多核和頻率高的CPU吐葵,多核可以執(zhí)行多個(gè)線程规揪;
配置大內(nèi)存,提高內(nèi)存温峭,既提高緩存區(qū)容量猛铅,減少磁盤I/O時(shí)間,從而提高響應(yīng)速度凤藏;
配置高速磁盤或合理分布磁盤奸忽,提高并行操作能力。
2.2 優(yōu)化數(shù)據(jù)庫參數(shù)
優(yōu)化數(shù)據(jù)庫參數(shù)可以提高資源利用率,從而提高M(jìn)ySQL服務(wù)器性能.MySQL服務(wù)的配置參數(shù)都在my.cnf或my.ini,下面列出性能影響較大的幾個(gè)參數(shù).
key_buffer_size:索引緩沖區(qū)大小
table_cache:能同時(shí)打開表的個(gè)數(shù)
query_cache_size和query_cache_type:前者是查詢緩沖區(qū)大小,后者是前面參數(shù)的開關(guān),0表示不使用緩沖區(qū),1表示使用緩沖區(qū),但可以在查詢中使用SQL_NO_CACHE表示不要使用緩沖區(qū),2表示在查詢中明確指出使用緩沖區(qū)才用緩沖區(qū),即SQL_CACHE.
sort_buffer_size:排序緩沖區(qū)
2.3 分庫分表
主從數(shù)據(jù)庫揖庄,配置master主數(shù)據(jù)庫栗菜,設(shè)置好服務(wù)id與日志文件,它主要負(fù)責(zé)更新操作蹄梢,從數(shù)據(jù)庫slave疙筹,設(shè)置好服務(wù)id與日志文件(為了避免主數(shù)據(jù)庫宕機(jī)后無機(jī)器代替,故從數(shù)據(jù)庫的日志文件名與主數(shù)據(jù)庫的一樣)禁炒,然后開啟從數(shù)據(jù)庫的IO線程與SQL線程而咆。