mysql優化思路

2021-09-09 05:34:17 字數 1668 閱讀 1048

二、 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?有沒有減少檔案排序?語句的掃瞄行數減少了多少?沒有大量...