一、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