mysql 效能學習1

2021-08-30 17:06:50 字數 1369 閱讀 6430

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的表級鎖定分為讀鎖定和寫鎖定,通過四個佇列來維護這兩周鎖定,分為當前鎖定的正在讀寫...