前言
從今天開始, 就帶各位小伙伴學習資料庫技術,資料庫技術是Java開發中必不可少的一部分知識內容,也是非常重要的技術,本系列教程由淺入深, 全面講解資料庫體系, 非常適合零基礎的小伙伴來學習,
全文大約【1567】 字,不說廢話,只講可以讓你學到技術、明白原理的純干貨!本文帶有豐富案例及配圖視頻,讓你更好的理解和運用文中的技術概念,并可以給你帶來具有足夠啟迪的思考......
一. 存盤引擎介紹
1. 什么是存盤引擎
資料庫最核心的一點就是用來存盤資料,資料存盤就避免不了和磁盤打交道,那么資料以哪種方式進行存盤,如何存盤是存盤的關鍵所在,所以存盤引擎就相當于是資料存盤的發動機,來驅動資料在磁盤層面進行存盤,不同的存盤引擎功能差別很大,各位小伙伴不要著急,下面我們逐一道來,
查看存盤引擎:
SHOW ENGINES;

2. InnoDB存盤引擎
特點:
- InnoDB存盤引擎提供了具有提交、回滾和崩潰恢復能力的事務安全,相比較MyISAM存盤引擎,InnoDB寫的處理效率差一點并且會占用更多的磁盤空間保留資料和索引,
- 提供了對資料庫事務ACID(原子性Atomicity、一致性Consistency、隔離性Isolation、持久性Durability)的支持,實作了SQL標準的四種隔離級別,
- 設計目標就是處理大容量的資料庫系統,MySQL運行時InnoDB會在記憶體中建立緩沖池,用于緩沖資料和索引,
- 執行“select count(*) from table”陳述句時需要掃描全表,因為使用innodb引擎的表不會保存表的具體行數,所以需要掃描整個表才能計算多少行,
- InnoDB引擎是行鎖,粒度更小,所以寫操作不會鎖定全表,在并發較高時,使用InnoDB會提升效率,即存在大量UPDATE/INSERT操作時,效率較高,
- InnoDB清空資料量大的表時,是非常緩慢,這是因為InnoDB必須處理表中的每一行,根據InnoDB的事務設計原則,首先需要把“洗掉動作”寫入“事務日志”,然后寫入實際的表,所以,清空大表的時候,最好直接drop table然后重建,即InnoDB一行一行洗掉,不會重建表,
使用場景:
- 經常UPDETE/INSERT的表,使用處理多并發的寫請求,
- 支持事務,必選InnoDB,
- 可以從災難中恢復(日志+事務回滾),
- 外鍵約束、列屬性AUTO_INCREMENT支持,
3. MyISAM存盤引擎
特點:
- MyISAM不支持事務,不支持外鍵,SELECT/INSERT為主的應用可以使用該引擎,
- 每個MyISAM在存盤成3個檔案,擴展名分別是:
-
- frm:存盤表定義(表結構等資訊),
- MYD(MYData),存盤資料,
- MYI(MYIndex),存盤索引,
- 不同MyISAM表的索引檔案和資料檔案可以放置到不同的路徑下,
- MyISAM型別的表提供修復的工具,可以用CHECK TABLE陳述句來檢查MyISAM表健康,并用REPAIR TABLE陳述句修復一個損壞的MyISAM表,
- 在MySQL5.6以前,只有MyISAM支持Full-text全文索引,
使用場景:
- 經常SELECT/INSERT的表,插入不頻繁,查詢非常頻繁,
- 不支持事務,
- 做很多count 的計算,
4. MyISAM和Innodb區別
下面給各位小伙伴梳理下,敲黑板啦,重點來啦,
InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個存盤引擎,這兩個存盤引擎各有優劣,視具體應用而定,基本的差別為:MyISAM型別不支持事務處理,而InnoDB型別支持,MyISAM型別強調的是性能,其執行速度比InnoDB型別更快,而InnoDB提供事務支持已經外部鍵等高級資料庫功能,
具體實作的差別:
- MyISAM是非事務安全型的,而InnoDB是事務安全型的,
- MyISAM鎖的粒度是表級,而InnoDB支持行級鎖定,
- MyISAM不支持外鍵,而InnoDB支持外鍵,
- MyISAM相對簡單,所以在效率上要優于InnoDB,小型應用可以考慮使用MyISAM,
- InnoDB表比MyISAM表更安全,
二. 結語
最后在這里對本文核心要點進行總結:
- MySQL最常用的存盤引擎就是InnoDB和MyISAM這兩個引擎,所以需要各位小伙伴熟記,
- 默認的存盤引擎是InnoDB支持事務、主外鍵關系,
三. 配套視頻
如果你不習慣閱讀技術文章,或是對文中的技術概念不能很好地理解,可以來看看篩選出的視頻教程,與本文配套的Java學習視頻,鏈接如下
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/554116.html
標籤:其他
下一篇:返回列表
