二、 mysql效能低解決思路:
1、索引匹配原則:
全值匹配、字首匹配、列字首匹配、匹配範圍值、只訪問索引的查詢、精確匹配某一列並範圍匹配某列
2、關於sql的優化思路:1、使用explain或者desc 檢視sql的執行計畫
了解輸出項的含義,是否走索引或者索引合理。
2、當sql要查詢的資料超過總記錄的30%,sql將不走索引
3、根據where的條件新增合理的組合索引,根據where條件中的字段的使用頻率從高到低的順序從左往右。例如:uion_index(a,b,c) ,a>b>c
4、充分利用覆蓋索引,減少回表帶來的效能消耗
5、小表驅動大表 join
6、group by、order by可能會造成不能正確的走索引。只有當索引列的順序和order by 字句的順序完全一致,並且遵循同樣的公升序活降序規則,mysql才會使用索引対結果做排序 。
7、虛擬列,可以讓表示式使用索引
8、mysql8.x函式索引使用虛擬列演變而來,實現表示式使用索引函式索引使用虛擬列演變而來,實現表示式使用索引
9、強制走索引force index
10、不要問加索引會影響效能,只要利大於弊,大膽加索引
11、臨時表
12、mysql8.x跳躍索引
13、避免使用select * ,只列舉出需要的字段
14、in、exists使用
1. in
select * from a where filed_a in (select filed_b from b);
執行順序:先執行b表的子查詢,再把子查詢的結果集加以快取並作為a表的過濾條件,執行a表查詢時候遍歷所有的子查詢的結果。
```#include #includeusing namespace std;
int a = ;
int b = ;
int arra = {};
vectorvec;
int count = 0;
int main ()
; int arra = {};
vectorvec;
int count = 0;
int main ()
0.01.5 0.0
2.5 0.0
3.5 0.0
4.5 0.0
5.5 0.0
6.5 0.0
7.5 0.0
8.5 0.0
9.5 0.0
2、需要關注各個邏輯cpu之前的負載是否均衡(可能是不均衡導致效能問題),可以使用mpstat命令進行詳細觀察。
mpstat -p all 5
3、建議伺服器為mysql專用。
4、是否使用了swap
5、記憶體使用率
free -m
6、是否發生記憶體洩漏
記憶體洩漏觀察方法buff/cache和used對比。如果發生了記憶體洩漏解決方案:
1.重啟mysql服務
2.將mysql公升級到最新的小版本
7、通過vmstat來觀察每秒的程序、記憶體、swap、i/o、cpu等詳細情況。
8、iostat -x i/o使用情況
mysql思路 MySQL優化思路
通過指令碼,重新整理觀察mysql的status,觀察是否有週期性故障活波動,一般由訪問高峰或者快取失效引起,家快取並更改快取失效策略,是失效時間分散或頁面定時失,show processlist顯示哪些執行緒正在執行。您也可以使用mysqladmin processlist語句得到此資訊。如果您有...
mysql優化思路
調優思路 1.資料庫設計與規劃 以後再修該很麻煩,估計資料量,使用什麼儲存引擎 2.資料的應用 怎樣取資料,sql語句的優化 3.mysql服務優化 記憶體的使用,磁碟的使用 4.作業系統的優化 核心 tcp連線數量 5.公升級硬體裝置 磁碟io規劃 raid技術 raid0 xfs swap分割槽...
mysql優化思路
為什麼別人問你mysql優化的知識 總是沒有底氣,因為你只是回答一些大而化之的調優原則,比如 1 建立合理索引 什麼樣的索引合理?2 分表分庫 用什麼策略分表分庫?3 主從分離 用什麼中介軟體?並沒有從細化到定量的層面去分析.如qps提高了 n?有沒有減少檔案排序?語句的掃瞄行數減少了多少?沒有大量...