mysql優化
1、為什麼要對資料庫進行優化?
1.1、避免出現頁面訪問錯誤
由於資料庫連線timeout產生頁面5xx的錯誤
由於慢查詢造成頁面無法載入
由於阻塞造成資料無法提交
1.2、增加資料庫的穩定性
很多資料庫問題都是由於低效的查詢引起的
1.3、優化使用者的體驗
流暢頁面的訪問速度
良好的**功能體驗
2、資料庫的優化可以從以下幾個方面
2.1、sql以及索引
2.2、資料庫表結構
2.3、系統配置
2.4、硬體
3、sql以及索引的優化
3.1、慢查詢日誌的常用sql
是否開啟慢查詢日誌,有兩個值off/on。
show variables like 'slow_query_log'
設定是否開啟慢查詢。
set global slow_query_log = on
檢視日誌檔案的狀態
show variables like '%log%'
設定開啟未使用索引的查詢
set global log_queries_not_using_indexes=on
檢視慢查詢的設定時間,預設為10秒;設定慢查詢的時間為1s
show variables like 'long_query_time'
set long_query_time = 1
3.2、慢查詢日誌的儲存格式
執行該sql的時間
# time:2018-09-17t07:18:02.492417z
執行該條sql的主機資訊
#user@host: root[root] @ localhost [127.0.0.1] id: 26該條sql的執行資訊
# query_time:0.002000 lock_time: 0.000000 rows_sent: 356 rows_examined: 712該條sql的執行時間set timestamp=1537168682;
該條sql的內容select * from t_user limit 6;
3.3、使用explain來執行sql的執行計畫
expalain返回各列的含義:
table:顯示這一行的資料是關於哪張表的
type:這是最重要的列,顯示連線使用了何種型別。從最好到最差的連線型別為const、eq_reg、ref、range、index和all。
possible_keys:顯示可能應用在這張表中的索引。如果為null,沒有可能的索引。
key:實際使用的索引。如果為null,沒有使用索引。
key_len:使用的索引的長度,在不損失精度的情況下,長度越短越好。
ref:顯示索引的那一列被使用了,如果可能的話是乙個常數。
rows:mysql認為必須檢查的用來返回請求資料的行數。
extra:extra列需要注意的返回值。
using filesort:看到這個的時候查詢就需要優化了,
using temporary:看到這個的時候查詢就需要優化了。mysql需要建立乙個臨時表來儲存結果,這通常發生在不同的列集進行order by上,而不是group by上。
mysql的介面怎麼優化 Mysql常用的優化技巧
1.通過show status 命令了解各種sql的執行效率 2.定位執行效率較低的sql語句 開啟慢查詢記錄 開啟mysql配置檔案my.ini 找到 mysqld 在其下面新增 long query time 2 慢查詢時間 log slow queries e mysql logs log.l...
mysql怎麼優化 MYSQL如何優化?
mysql如何優化?結合你的經驗 1.資料庫的設計 盡量把資料庫設計的更小的佔磁碟空間.1 盡可能使用更小的整數型別.mediumint就比int更合適 2 盡可能的定義欄位為not null,除非這個字段需要null.3 如果沒有用到變長字段的話比如varchar,那就採用固定大小的紀錄格式比如c...
介面效能優化怎麼做?
後記想象一下以下幾個場景 我們在獲取乙個使用者詳情介面時,刷了無數次,瀏覽器就在那轉圈,硬是刷不出來,開啟控制台,顯示介面超時 假如我們服務a有個批量發營銷簡訊的任務,服務a用批量的userid調服務b的使用者服務以獲取使用者的手機號,從而完成簡訊傳送功能。奈何服務b的通過userid介面獲取使用者...