1、myisam只支援表級鎖 innodb支援行級鎖
2、myisam不支援事務 innodb支援事務
3、myisam不支援外來鍵 innodb支援外來鍵
4、myisam支援全文索引,innodb不支援
5、myisam本身儲存了表的總資料行,innodb沒有儲存,查總行數myisam更快,如果加了查詢條件兩者就沒有區別了
myisam和innodb究竟該怎麼選擇
資料庫有外來鍵嗎?
需要事務支援嗎?
需要全文索引嗎?
innodb的行鎖模式有以下幾種:共享鎖,排他鎖,意向共享鎖(表鎖),意向排他鎖(表鎖),間隙鎖。
注意:當語句沒有使用索引,innodb不能確定操作的行,這個時候就使用的意向鎖,也就是表鎖
聚簇索引主要應用於innodb
非聚簇索引主要應用於myisam
表資料按照索引的順序來儲存的,也就是說索引項的順序與表中記錄的物理順序一致。對於聚集索引,葉子結點即儲存了真實的資料行,不再有另外單獨的資料頁。 在一張表上最多只能建立乙個聚集索引,因為真實資料的物理順序只能有一種。
非聚集索引。表資料儲存順序與索引順序無關。對於非聚集索引,葉結點包含索引字段值及指向資料頁資料行的邏輯指標,其行數量與資料表行資料量一致。
MySQL中MyISAM與InnoDB區別
mysql中myisam與innodb區別 myisam innodb 事物處理 不支援支援 外來鍵不支援 支援行鎖 不支援支援 全文索引 支援不支援 表的具體行數 儲存表的具體行數 掃瞄表來計算行數 delete表時 先drop表,然後重建表 一行一行的刪除 索引和資料 分開的,並且索引是有壓縮的...
MySQL中MyISAM與InnoDB區別及選擇
innodb 支援事務處理等 不加鎖讀取 支援外來鍵 支援行鎖 不支援fulltext型別的索引 不儲存表的具體行數,掃瞄表來計算有多少行 delete 表時,是一行一行的刪除 innodb 把資料和索引存放在表空間裡面 跨平台可直接拷貝使用 innodb中必須包含auto increment型別欄...
MySQL中MyISAM與InnoDB區別及選擇
支援事務處理等 不加鎖讀取 支援外來鍵 支援行鎖 不支援fulltext型別的索引 不儲存表的具體行數,掃瞄表來計算有多少行 delete 表時,是一行一行的刪除 innodb 把資料和索引存放在表空間裡面 跨平台可直接拷貝使用 innodb中必須包含auto increment型別欄位的索引 很難...