1 使用explain語句去檢視分析結果,如
explain select * from test1 where id=1;
會出現:
id selecttype table type possible_keys key key_len ref rows extra各列
其中,type=const表示通過索引一次就找到了,key=primary的話,表示使用了主鍵
type=all,表示為全表掃瞄,key=null表示沒用到索引;
假如在test1表中,結構如下:
id name
假如id為自動遞增,name設定了索引,則explain後,會發現
type=ref,因為這時認為是多個匹配行,在聯合查詢中,一般為ref
2 mysql中的組合索引
假設表有id,key1,key2,key3,把三者形成乙個組合索引,則
如:where key1=....
where key1=1 and key2=2
where key1=3 and key3=3 and key2=2
根據最左原則,這些都是可以使用索引的哦
如from test where key1=1 order by key3
用explain分析的話,只用到了normal_key索引,但只對where子句起作用,而後面的order by需要排序
3 使用慢查詢分析:
在my.ini中:
long_query_time=1
log-slow-queries=d:\mysql5\logs\mysqlslow.log
把超過1秒的記錄在慢查詢日誌中
可以用mysqlsla來分析之。也可以在mysqlreport中,有如
dms 分別分析了select ,update,insert,delete,replace等所佔的百份比
4 myisam和innodb的鎖定
myisam中,注意是表鎖來的,比如在多個update操作後,再select時,會發現select操作被鎖定了,必須等所有
update操作完畢後,再能select
innodb的話則不同了,用的是行鎖,不存在上面問題。
5 mysql的事務配置項
innodb_flush_log_at_trx_commit=1
表示事務提交時立即把事務日誌寫入磁碟,同時資料和索引也更新
innodb_flush_log_at_trx_commit=0
事務提交時,不立即把事務日誌寫入磁碟,每隔1秒寫一次
innodb_flush_log_at_trx_commit=2
事務提交時,立即寫入磁碟檔案(這裡只是寫入到核心緩衝區,但不立即重新整理到磁碟,而是每隔1秒重新整理到磁碟,同
時更新資料和索引,
高效能Mysql學習筆記 1 總覽
高效能mysql 這本經典之作,是個程式設計師就會買買買,但真正看完的確實不易。本篇部落格記錄的,也只是本人第一遍快速閱讀完之後的乙個簡易總結和記錄,尚未未深入學習,但已經感受到此書的 神力 似乎沒有這本書解決不了的問題 前提是要對本書的每乙個字都要深入研究 看似700多頁的一本書,實際學習起來,恐...
MySQL效能優化(1)
json型別 例項 mysql資料庫由後台執行緒及乙個共享記憶體區組成,資料庫例項才是真正用於運算元據庫檔案的程式集,是乙個動態概念。多例項就是在一台伺服器上同時開啟多個不同的資料庫服務埠 例如3306 3307 同時執行多個資料庫程序就是多例項。優點 充分利用伺服器資源。缺點 資源搶占問題。中小型...
MySQL學習筆記(三)效能優化1
mysql的資料庫鎖定分為表級鎖定,行級鎖定,頁級鎖定。innodb 儲存引擎和myisam 儲存引擎最大區別主要有四點,第一點是快取機制,第二點是事務支援,第三點是鎖定實現,最後一點就是資料儲存方式的差異。mysql的表級鎖定分為讀鎖定和寫鎖定,通過四個佇列來維護這兩周鎖定,分為當前鎖定的正在讀寫...