理解存儲引擎MyISAM與InnoDB

一、MyISAM:默認表類型,它是基於傳統的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存儲記錄和文件的標準方法。不是事務安全的,並且不支持外鍵,若是執行大量的select,insert   MyISAM比較適合html

二、InnoDB:支持事務安全的引擎,支持外鍵、行鎖、事務是他的最大特色。若是有大量的update和insert,建議使用InnoDB,特別是針對多個併發和QPS較高的狀況數據庫

事務的ACID屬性:atomicity,consistent,isolation,durable。安全

關於死鎖:併發

什麼是死鎖?當兩個事務都須要得到對方持有的排他鎖才能完成事務,這樣就致使了循環鎖等待,也就是常見的死鎖類型。函數

解決死鎖的方法:atom

一、  數據庫參數spa

二、  應用中儘可能約定程序讀取表的順序同樣code

三、  應用中處理一個表時,儘可能對處理的順序排序htm

四、  調整事務隔離級別(避免兩個事務同時操做一行不存在的數據,容易發生死鎖)blog

三、關於count()函數

myisam保存有表的總行數,若是select count(*) from table;會直接取出出該值

innodb沒有保存表的總行數,若是使用select count(*) from table;就會遍歷整個表,消耗至關大,可是在加了wehre       條件後,myisam和innodb處理的方式都同樣。

 

一、能夠用 show create table tablename 命令看錶的引擎類型。

3、能夠執行如下命令來切換非事務表到事務(數據不會丟失),innodb表比myisam表更安全:alter table tablename type=innodb;
  或者使用 alter table tablename engine = innodb;

下面先讓咱們回答一些問題:   

◆你的數據庫有外鍵嗎?   

◆你須要事務支持嗎?   

◆你須要全文索引嗎?   

◆你常常使用什麼樣的查詢模式?   

◆你的數據有多大?   

參考:

https://www.cnblogs.com/y-rong/p/8110596.html

相關文章
相關標籤/搜索