MySQL中myisam和innodb有什麼差異?

老男孩IT教育機構發表於2021-12-03

  在MySQL中,儲存引擎有很多種,每種儲存引擎各具有不同的優缺點,其中比較常見的是:MyISAM和InnoDB。那麼MySQL中myisam和innodb有什麼區別?具體內容請看下文:

  myisam和innodb有什麼區別?

  MySQL預設採用的是MyISAM,MyISAM不支援事務,而InnoDB支援。InnoDB的AUT COMMIT預設是開啟的,即每條SQL語句會預設被封裝成一個事務,自動提交,這樣會影響速度,所以最好是把多條SQL語句顯示放在begin和commit之間,組成一個事務之後再去提交。

  InnoDB支援資料行鎖定,而MyISAM不支援,只支援鎖定整個表。即MyISAM同一個表上的讀鎖和寫鎖是互斥的,MyISAM併發讀寫時如果等待佇列中既有讀請求又有寫請求,預設寫請求的優先順序高,即使讀請求先到,所以MyISAM不適用於有大量查詢和修改並存的情況下,這樣會導致查詢程式長時間堵塞;因為MyISAM是鎖表,所以某項讀操作比較耗時會使其他寫程式餓死。

  InnoDB支援外來鍵,MyISAM不支援;而且InnoDB的主鍵範圍更大,是MyISAM的2倍。

  InnoDB不支援全文索引,而MyISAM支援。全文索引是指對char、varchar和text中的每個詞建立倒排序索引;MyISAM的全文索引其實沒有什麼太大用,因為它不支援中文分詞,必須由使用者分詞後加入空格再寫到資料表裡,而且少於4個漢字的詞會和停用詞一樣被忽略掉。

  MyISAM支援GIS資料,InnoDB不支援,即MyISAM支援以下空間資料物件:Point、line、Surface等。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2845593/,如需轉載,請註明出處,否則將追究法律責任。

相關文章