聚集索引指的是葉子順序和實體地址順序一致
非聚集索引指的是只有葉子順序是連線著的,實體地址則不一致
mysql常用的儲存引擎有innodb和myisam,都是基於b+樹實現的。
1.innodb預設聚集索引,因此他的索引檔案就是包含資料檔案內容,索引葉子節點直接儲存資料(.idb資料檔案)
(1).主鍵就是聚集索引
(2).在沒有主鍵的情況下會將唯一非空索引作為聚集索引
(3).如果都沒有的情況下就會在內部生成隱式主鍵作為聚集索引,這個列是乙個6位元組(48位)的整數作為聚集索引
2.innodb預設是行級鎖,行級鎖是基於索引實現的,因此sql中如果沒有使用到索引的情況下就不會使用行級鎖,而會換為使用表級鎖,從而導致效能下降
3.支援事務
4.需要維護mvcc一致性(多版本併發控制),因此多出來了維護成本
myisam屬於非聚集索引,因此他的資料檔案內容和索引檔案是分離的,索引葉子節點儲存資料指標(.myd資料檔案,.myi索引檔案)
1.不支援事務,崩潰後無法安全恢復
2.比innodb的查詢速度更快
3.myisam使用的是表級鎖,在同時有讀和寫的操作時候,即使讀鎖比寫鎖先進到鎖等待佇列,寫鎖也會先插入到讀鎖的前面先進行寫的操作,因此在有大量寫的操作時,myisam可能會造成讀取資料大量在阻塞的情況
1.innodb主鍵索引叫聚簇索引、其他索引都叫輔助索引(二級索引,也可以叫非聚簇索引),當使用輔助索引時,會先從輔助索引中找到對應的行key,然後再根據key去主鍵索引找對應的行資料,造成兩次索引查詢。
2.myisam的主鍵索引和輔助索引都是非聚簇索引,非聚簇索引的特性就是葉子節點不會儲存行資料,而是儲存資料記錄的位址,再直接去資料檔案中找。
MYSQL常用儲存引擎
一 innodb 儲存引擎 innodb 儲存引擎自 mysql 5.5 版本起被指定為預設的儲存引擎,用於完成事務 回滾 崩潰修復和多版本併發控制的事務安全處理。同時也是 mysql中第乙個提供外來鍵約束的表引擎,尤其對事務處理的能力,是 mysql 其他儲存引擎所無法與之比擬的。innodb 的...
常用Mysql儲存引擎
innodb是事務型資料庫的首選引擎,支援事物安全表 acid 支援行鎖定和外來鍵。mysql5.5.5之後,innodb作為預設引擎。innodb主要特性 1.innodb給mysql提供 回滾和崩潰恢復能力的事物安全 acid相容 儲存引擎。innodb鎖定在行級並且也在select語句中提供乙...
MySQL常用的儲存引擎
mysql常用的儲存引擎為myisam innodb memory merge,其中innodb提供事務安全表,其他儲存引擎都是非事務安全表。myisam是mysql的預設儲存引擎。myisam不支援事務 也不支援外來鍵,但其訪問速度快,對事務完整性沒有要求。innodb儲存引擎提供了具有提交 回滾...