為什麼別人問你mysql優化的知識 總是沒有底氣, 因為你只是回答一些大而化之的調優原則, 比如:
1、」建立合理索引」(什麼樣的索引合理?)
2、「分表分庫」(用什麼策略分表分庫?)
3、「主從分離」(用什麼中介軟體?)
並沒有從細化到定量的層面去分析.
如qps提高了%n? 有沒有減少檔案排序?語句的掃瞄行數減少了多少?沒有大量的資料供測試,一般在學習環境中,只是手工新增幾百上萬條資料,資料量小,看不出語句之間的明確區別.
如何提高mysql的效能?
需要優化,則說明效率不夠理想.,因此我們首先要做的,不是優化,而是---診斷.
治病的前提,是診病,找出瓶頸所在. cpu,記憶體,io? 峰值,單條語句?
輔助工具awk
awk指令碼使用:awk 『』 score.txt
檢視問題是否是週期性故障或波動------>一般由訪問高峰或快取崩潰引起,加快取並更改快取失效策略,使快取失效時間分散或夜間定時失效。
mysql常用語句:
show processlist;
show status;
如果還有問題,那麼可以通過show processlist命令或者開啟慢查詢獲取有問題的sql,然後通過profiling分析語句或者explain語句分析問題。
什麼情況下產生臨時表
1、group by的列和order by的列不同時,兩表查詢時,取a表的內容,group/order by另外表的列
2、distinct和order by一起使用時
3、開啟了sql_small_restult選項
什麼情況下臨時表寫在磁碟上
1、取出的列含有text/blob型別時,記憶體表儲存不了text/blob型別
2、在group by或distinct的列中存在》512位元組的string列
3、select中含有》512位元組的string列,同時又使用了union或union all語句。
mysql5.0以後新增了乙個小功能,就是profiles功能
首先執行 set profiling=on; 以後你所執行的語句mysql都會給你記錄下來,可以通過 show profiles 命令檢視你所執行的命令。
然後可以根據 show profile for query 命令id 檢視命令執行的過程。具體執行過程如下:
mysql> set profiling=on
-> ;
query ok, 0 rows affected
mysql> show profiles;
empty set
mysql> select * from ry;
+----+-------+-------+------+
| id | mz | gz | mcid |
+----+-------+-------+------+
| 1 | joe | 70000 | 1 |
| 2 | henry | 80000 | 2 |
| 3 | sam | 60000 | 2 |
| 4 | max | 90000 | 1 |
| 5 | janet | 69000 | 1 |
| 6 | randy | 85000 | 1 |
| 7 | jack | 85000 | 1 |
+----+-------+-------+------+
7 rows in set
mysql> show profiles;
+----------+------------+------------------+
| query_id | duration | query |
+----------+------------+------------------+
| 1 | 0.00070325 | select * from ry |
+----------+------------+------------------+
1 row in set
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 關於sql的優化思路 1 使用explain或者desc 檢視sql的執行計畫 了解輸出項的含義,是否走索引或者索引合理。2 當sql要查詢的資料超過總記錄的...