Mysql 知識點
1.死鎖回滾策略
死鎖發生時mysql會選擇行數少的事務進行回滾
2.鎖類型
共享鎖,排他鎖(行級鎖 innob)
● Record Lock:鎖定單條記錄
n● Gap Lock:鎖定一個範圍的記錄、但不包括記錄本身
n● Next-Key Lock:鎖定一個範圍的記錄、並且包n含記錄本身、這是默認的鎖類型
n更新操作執行流程:n 1.當前讀n 2.返回並且加鎖n 3.更新行n 4.返回成功
3.Innob與mysiam的一些區別
Innob支持行級鎖,mysiam只支持表級鎖
select count(1) Innob會掃整個表,mysiam直接讀取內存中記錄的值
4.常用的查詢優化
1.考慮加索引, 索引在表連接時尤為重要,可以通過explain語句查詢結果進行優化
2.調整緩存使用的內存大小,高效使用Innob緩衝池,查詢緩存
3.避免使用事務,注意鎖的使用
4.or盡量用in代替
5.性能監控和分析 mysqltunner mysqlreport
6.盡量減少掃描行數n(總的來說就是數據緩存,鎖,資料庫連接,索引,sql涉及數據量,sql優化,性能監控, 日誌佔用磁碟io , 主從同步佔用資源 )
執行情況分析命令(explain)
5.聚簇索引
與主鍵是相同的.為了得到好的性能需要了解聚簇索引。
1.如果在表中定義了主鍵,innodb用主鍵作為聚簇索引
n2.如果沒有主鍵,innodb選擇第一個只有非空行的唯一索引作為主鍵,並且innodb將他用作局聚簇索引
3.否則innodb自己生成一個包含行ID的複合列作為聚簇索引
6.二級索引
除了聚簇索引都被稱為二級索引
二級索引包含主鍵,因此主鍵不宜過長
7.MVVC(多版本控制協議)
8.補充
索引類型 : 主鍵,唯一索引,普通索引,全文索引
join操作是只要char 和varcher聲明的長度一致是可以通過索引的
前綴索引 :char varcahr binary varbinaryn
推薦閱讀:
※MySQL在Data Warehouse應用的一些指引
※12 條用於 Linux 的 MySQL/MariaDB 安全最佳實踐
※在SQL中,如何查詢某一欄位中最大值的數據?
※雲資料庫MySQL測試的正確姿勢
※MySQL多表關聯查詢效率高點還是多次單表查詢效率高,為什麼?
TAG:MySQL |