MySQL簡介以及MySQL中InnoDB 與 MyISAM 引擎的區別

MySQL

MySQL簡介

數據庫的產生
  • 爲何有數據庫?
    文件保存數據有以下缺陷:
    1.文件安全性問題
    2.不利於查詢和管理
    3.不利於存儲海量數據
    4.程序中使用不方便
  • 什麼是數據庫?
    綜合以上文件存儲的缺陷,專家們設計出更利於管理數據的東西----數據庫,可以有效的管理數據,數據庫水平是衡量一個程序員水平的重要指標。
  • 數據庫的存儲介質:
    1.磁盤
    2.內存
主流數據庫
  • SQL Server :微軟的產品, .Net程序員的最愛,中大型項目。
  • Oracle: 甲骨文產品,適合大型項目,複雜的業務邏輯,併發一般來說不如MySQL。
  • MySQL:世界上最受歡迎的數據庫,屬於甲骨文,併發性好,不適合做複雜的業務。主要用在電商, SNS,論壇。對簡單的SQL處理效果好。
  • PostgreSQL :加州大學伯克利分校計算機系開發的關係型數據庫,不管是私用,商用,還是學術研究使用,可以免費使用,修改和分發。
  • SQLite: 是一款輕型的數據庫,是遵守ACID的關係型數據庫管理系統,它包含在一個相對小的C庫中。它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它佔用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。
  • H2: 是一個用Java開發的嵌入式數據庫,它本身只是一個類庫,可以直接嵌入到應用項目中。

MySQL數據安裝

MySQL分類
  • DDL數據定義語言,用來維護存儲數據的結構代表指令: create, drop, al ter
  • DML數據操縱語言,用來對數據進行操作代表指令: i nsert, del ete, update
  • DML中又單獨分了一個DQL,數據查詢語言,代表指令: sel ect
  • DCL數據控制語言,主要負責權限管理和事務代表指令: grant, revoke, commi t
查看數據引擎
show engines;
  • 現在默認使用MySQL創建庫時候使用的引擎是 InnoDB
談一談MySQL中 InnoDB 與 MyISAM 引擎的區別
  • 在功能上的區別:

    1.事務支持:

    • MyISAM不支持事務,而InnoDB支持。InnoDB的AUTOCOMMIT默認是打開,即每一條SQL語句都會被默認封裝成一個事務,自動提交。
    • MyISAM是非事務安全型的,而InnoDB是食物安全型的。

    2.存儲結構:

    • MyISAM:每個MyISAM在磁盤上存儲成三個文件,第一個文件類型後綴名.fem(以表的名字開始), 第二個文件後綴名 .MYD(MYData)(數據文件),第三個文件後綴名.MYI(MYIndex)(索引文件)
    • InnoDB:所有的表都保存在同一個數據文件中(也可能是多個文件,或者是獨立的表空間文件),InnoDB之受限於操作系統的大小,一般是2GB。

    3.存儲空間

    • MyISAM:可以壓縮,但是存儲空間較小。支持三種不同的存儲格式:靜態表,動態表,壓縮表。
    • InnoDB:需要更多的內存河村春,他會在主內存中建立其專用的緩衝池用於高速緩衝數據和索引。

    4.可移植性備份及恢復

    • MySIAM:數據以文件形式存儲,跨平臺數據轉移很方便。備份恢復時可單獨對於某表進行操作。
    • InnoDB:可以拷貝數據文件,備份binlog,或者使用mysqldump,但是當數據量過大時就很難受了。

    5.事務支持

    • MySIAM:強調的是性能,操作具有原子性,執行效率比InnoDB快,但是不提供事務支持
    • InnoDB:提供事務支持,外鍵等高級數據庫功能。

    6.AUTO_INCREMENT(自增)

    • MySIAM:可以和其他字段一起建立聯合索引
    • InnoDB:必須包含只有該字段的索引

    7.表鎖差異

    • MySIAM:只支持表級鎖
    • InnoDB:支持事務和行級鎖

    8.全文索引

    • MySIAM:支持全文索引
    • InnoDB:不支持全文索引

    9.表的主鍵

    • MySIAM:允許沒有任何索引和主鍵的表存在,索引保存行的地址。
    • InnoDB:若是沒有設置主鍵或者索引就會自動創建生成一個6字節的主鍵(用戶不可見)

    10.表的總行數

    • MySIAM:保存有表的總行數,(使用:select count( * ) from table),就可以知道總行數。
    • InnoDB:沒有保存表的總行數。

    11.外鍵

    • MySIAM:不支持
    • InnoDB:支持

    12.CURD操作

    • MySIAM:若是執行大量SELECT,MySIAM更合適
    • InnoDB:若是數據執行大量的INSERT,UPDATE,更適合使用InnoDB
  • 索引方式不同:
    詳細請看:

  • MySQL中 InnoDB 與 MyISAM 引擎的區別(簡單總結)

  • MySQL中 InnoDB 與 MyISAM 引擎的區別(都使用了B-Tree 但是索引方式有所不同)

下一篇:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章