<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      MySQL存儲引擎MyISAM與InnoDB之間的比較

      [摘要]MySQL中的數據用各種不同的技術存儲在文件(或者內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度...
      MySQL中的數據用各種不同的技術存儲在文件(或者內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平并且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。

      MySQL有多種存儲引擎,MyISAM和InnoDB是其中常用的兩種。這里介紹關于這兩種引擎的一些基本概念(非深入介紹)。

      MyISAM是MySQL的默認存儲引擎,基于傳統的ISAM類型,支持全文搜索,但不是事務安全的,而且不支持外鍵。每張MyISAM表存放在三個文件中:frm 文件存放表格定義;數據文件是MYD (MYData);索引文件是MYI (MYIndex)。

      InnoDB是事務型引擎,支持回滾、崩潰恢復能力、多版本并發控制、ACID事務,支持行級鎖定(InnoDB表的行鎖不是絕對的,如果在執行一個SQL語句時MySQL不能確定要掃描的范圍,InnoDB表同樣會鎖全表,如like操作時的SQL語句),以及提供與Oracle類型一致的不加鎖讀取方式。InnoDB存儲它的表和索引在一個表空間中,表空間可以包含數個文件。

      主要區別:

      MyISAM是非事務安全型的,而InnoDB是事務安全型的。

      MyISAM鎖的粒度是表級,而InnoDB支持行級鎖定。

      MyISAM支持全文類型索引,而InnoDB不支持全文索引。

      MyISAM相對簡單,所以在效率上要優于InnoDB,小型應用可以考慮使用MyISAM。

      MyISAM表是保存成文件的形式,在跨平臺的數據轉移中使用MyISAM存儲會省去不少的麻煩。

      InnoDB表比MyISAM表更安全,可以在保證數據不會丟失的情況下,切換非事務表到事務表(alter table tablename type=innodb)。

      應用場景:

      MyISAM管理非事務表。它提供高速存儲和檢索,以及全文搜索能力。如果應用中需要執行大量的SELECT查詢,那么MyISAM是更好的選擇。
      InnoDB用于事務處理應用程序,具有眾多特性,包括ACID事務支持。如果應用中需要執行大量的INSERT或UPDATE操作,則應該使用InnoDB,這樣可以提高多用戶并發操作的性能。
      常用命令:

      (1)查看表的存儲類型(三種):

      show create table tablename
      show table status from dbname where name=tablename
      mysqlshow -u user -p password --status dbname tablename

      (2)修改表的存儲引擎:

      alter table tablename type=InnoDB

      (3)啟動mysql數據庫的命令行中添加以下參數使新發布的表都默認使用事務:

      --default-table-type=InnoDB

      (4)臨時改變默認表類型:

      set table_type=InnoDB
      show variables like 'table_type'

      以上就是mysql的兩種儲存引擎MyISAM和InnoDB的簡單介紹,以及兩種引擎之間的區別介紹。

      相關推薦:

      關于mysql的MERGE儲存引擎簡單例子

      mysql事務與mysql儲存引擎_MySQL

      MySQL兩種引擎的有什么區別

      以上就是MySQL存儲引擎MyISAM和InnoDB之間的比較的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清