前言:一些自己遇到的問題及理解(需補充修改)
索引型別:主鍵索引 / 普通索引 / 符合索引 / 唯一索引 / 全文索引
索引:查詢資料的資料結構,索引占用磁碟空間,更新資料的時候影響更新表的效率
(資料儲存型別)聚簇索引/非聚簇索引
聚簇:採用b+樹的資料結構,聚簇索引葉子節點存放證章表的資料,所以主鍵索引就是用的聚簇索引,查詢速度快
缺點:插入速度依賴著插入的順序,二級索引訪問需要2次索引查詢,第一次找到主鍵,再根據主鍵找到對應的資料行
非聚簇索引:在聚簇索引之上建立的索引,總是需要二次查詢,葉子節點儲存不是資料行的位置,而是主鍵的位置
過程:先檢索輔助索引獲取主鍵,然後再通過主鍵獲取到記錄
innodb資料檔案本事就是乙個b+樹,若採用非單調的主鍵會頻繁的**,插入速度過慢,也不建議用長字段作為主鍵,非聚簇索引每次都會先引用主鍵,導致存放輔助索引過大
個人總結一下:
聚簇索引:innodb特有的,因為資料和索引是在同乙個檔案中,採用b+樹的儲存方式,然後,聚簇索引(主鍵)的話,每次只要一次查詢,資料都在葉子節點,就會返回正行的資料內容
非聚簇索引的話:基於聚簇索引,然後每次都要用聚簇索引找到主鍵值,然後進行回表查詢
面試常問MySQL效能優化問題
知識綜述 1 mysql中鎖的種類 常見的表鎖和行鎖,也有metadata lock等等,表鎖是對一整張表加鎖,分為讀鎖和寫鎖,因為是鎖住整張表,所以會導致併發能力下降,一般是做ddl處理時使用。行鎖則是鎖住資料行,這種加鎖方法比較複雜,但是由於只鎖住有限的資料,對於其它資料不加限制,所以併發能力強...
面試常問MySQL效能優化問題
知識綜述 1 mysql中鎖的種類 常見的表鎖和行鎖,也有metadata lock等等,表鎖是對一整張表加鎖,分為讀鎖和寫鎖,因為是鎖住整張表,所以會導致併發能力下降,一般是做ddl處理時使用。行鎖則是鎖住資料行,這種加鎖方法比較複雜,但是由於只鎖住有限的資料,對於其它資料不加限制,所以併發能力強...
MySQL常問鎖的面試題
鎖 lock 在多人處理同乙個資料的時候,保證每次只有乙個人可以操作。mysql提供了頁鎖 全域性鎖 行鎖 表鎖。其中innodb採用的是行鎖和表鎖,myisam只支援表鎖。是指二個或者二個以上的程序在執行時候,因為爭奪資源造成相互等待的現象,程序一直處於等待中,無法得到釋放,這種狀態就叫做死鎖,批...