国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL的數(shù)據(jù)庫(kù)引擎介紹

這篇具有很好參考價(jià)值的文章主要介紹了MySQL的數(shù)據(jù)庫(kù)引擎介紹。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、什么是數(shù)據(jù)庫(kù)引擎

? ? 數(shù)據(jù)庫(kù)引擎就是操作數(shù)據(jù)庫(kù)的一段程序或程序段,用于存儲(chǔ)、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。

????利用數(shù)據(jù)庫(kù)引擎可控制訪問(wèn)權(quán)限并快速處理事務(wù),從而滿足企業(yè)內(nèi)大多數(shù)需要處理大量數(shù)據(jù)的應(yīng)用程序的要求。數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目是通過(guò)數(shù)據(jù)庫(kù)引擎與數(shù)據(jù)庫(kù)鏈接的。

? ? 何為數(shù)據(jù)庫(kù)引擎?簡(jiǎn)而言之,數(shù)據(jù)庫(kù)引擎就是驅(qū)動(dòng)各種數(shù)據(jù)庫(kù)的程序,它負(fù)責(zé)處理數(shù)據(jù)庫(kù)相關(guān)工作的整個(gè)核心部份。同樣的,數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目的操作指令,均會(huì)通過(guò)數(shù)據(jù)庫(kù)引擎的處理作用到數(shù)據(jù)庫(kù)上。

? ? MySQL是常用的數(shù)據(jù)庫(kù)軟件。它有諸多的優(yōu)點(diǎn),如開(kāi)源的,免費(fèi)的等。其實(shí)它還有一個(gè)很好的特點(diǎn),那就是有多種引擎可以供你選擇。MySQL數(shù)據(jù)庫(kù)引擎取決于MySQL在安裝的時(shí)候是如何被編譯的。要添加一個(gè)新的引擎,就必須重新編譯MYSQL。MYSQL常用2個(gè)引擎分別是MyISAMInnoDB

2、MyISAM

????在MySQL 5.5.8版本之前,MyIASM是默認(rèn)存儲(chǔ)引擎,但它沒(méi)有提供對(duì)數(shù)據(jù)庫(kù)事務(wù)的支持,也不支持行鎖和外鍵,因此當(dāng)INSERT或UPDATE數(shù)據(jù)時(shí)即寫操作需要鎖定整個(gè)表,效率便會(huì)低些,MyISAM主要面向一些OLAP(On-Line Analytical Processing)應(yīng)用。

????不過(guò)和Innodb不同,MyIASM中存儲(chǔ)了表的行數(shù),于是SELECT COUNT(*) FROM TABLE時(shí)只需要直接讀取已保存好的值而不用全表掃描。如果表的讀操作遠(yuǎn)遠(yuǎn)多于寫操作且不需要數(shù)據(jù)庫(kù)事務(wù)支持,那么MyIASM也是很好的選擇。

????此外,MyISAM另外一個(gè)與眾不同的地方在于,它的緩沖只緩沖索引文件,而不緩沖數(shù)據(jù)文件,這點(diǎn)和大多數(shù)數(shù)據(jù)庫(kù)都非常不同。

? ? MyISAM引擎使用B+Tree作為索引結(jié)構(gòu),葉節(jié)點(diǎn)的data域存放的是數(shù)據(jù)記錄的地址。MyISAM的索引方式也叫“非聚集”的,這么稱呼是為與InnoDB的聚集索引區(qū)分。下圖是MyISAM主鍵索引的原理圖:

MySQL的數(shù)據(jù)庫(kù)引擎介紹

3、InnoDB

????MySQL 5.5.8開(kāi)始,默認(rèn)的存儲(chǔ)引擎為InnoDB。Innodb引擎提供對(duì)數(shù)據(jù)庫(kù)ACID事務(wù)的支持,且實(shí)現(xiàn)了SQL標(biāo)準(zhǔn)的四種隔離級(jí)別,其設(shè)計(jì)目標(biāo)主要面向OLTP(On-Line Transaction Processing)的應(yīng)用。

????該引擎還提供了行鎖和外鍵約束,支持一致性的非鎖定讀,它的設(shè)計(jì)目標(biāo)是處理大容量數(shù)據(jù)庫(kù)系統(tǒng),它本身其實(shí)就是基于MySQL后臺(tái)的完整數(shù)據(jù)庫(kù)系統(tǒng),MySQL運(yùn)行時(shí)Innodb會(huì)在內(nèi)存中建立緩沖池,用于緩沖數(shù)據(jù)和索引。但該引擎不支持FULLTEXT類型的索引,且沒(méi)有保存表的行數(shù),當(dāng)SELECT COUNT(*) FROM TABLE時(shí)要掃描全表。

????當(dāng)要使用數(shù)據(jù)庫(kù)事務(wù)時(shí),該引擎是首選。由于鎖的粒度更小,寫操作不會(huì)鎖定全表,所以在并發(fā)較高時(shí),使用Innodb引擎會(huì)提升效率。

????但使用行級(jí)鎖也不是絕對(duì)的,如果在執(zhí)行一個(gè)SQL語(yǔ)句時(shí)MySQL不能確定要掃描的范圍,InnoDB表同樣會(huì)鎖全表。

? ? Innodb引擎的索引結(jié)構(gòu)同樣也是B+Tree,但I(xiàn)nnodb的索引文件本身就是數(shù)據(jù)文件,即B+Tree的數(shù)據(jù)域存儲(chǔ)的就是實(shí)際的數(shù)據(jù),這種索引就是聚集索引。這個(gè)索引的key就是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引。

????因?yàn)镮nnoDB的數(shù)據(jù)文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵(MyISAM可沒(méi)有),如果沒(méi)有顯式指定,則MySQL系統(tǒng)會(huì)自動(dòng)選擇一個(gè)可以唯一標(biāo)識(shí)數(shù)據(jù)記錄的列作主鍵,如果不存在這種列,則MySQL自動(dòng)為InnoDB表生成一個(gè)隱含字段作為主鍵,這個(gè)字段長(zhǎng)度為6個(gè)字節(jié),類型為長(zhǎng)整形。

????并且和MyISAM不同,InnoDB的輔助索引數(shù)據(jù)域存儲(chǔ)的也是相應(yīng)記錄主鍵的值而不是地址,所以當(dāng)以輔助索引查找時(shí),會(huì)先根據(jù)輔助索引找到主鍵,再根據(jù)主鍵索引找到實(shí)際的數(shù)據(jù)。

????所以Innodb不建議使用過(guò)長(zhǎng)的主鍵,否則會(huì)使輔助索引變得過(guò)大。建議使用自增的字段作為主鍵,這樣B+ Tree的每一個(gè)結(jié)點(diǎn)都會(huì)被順序的填滿,而不會(huì)頻繁的分裂調(diào)整,可以有效的提升插入數(shù)據(jù)的效率。Innodb的主鍵索引和輔助索引如下圖所示:

MySQL的數(shù)據(jù)庫(kù)引擎介紹

?

?MySQL的數(shù)據(jù)庫(kù)引擎介紹

????InnoDB 表是基于聚簇索引建立的。因此InnoDB 的索引能提供一種非常快速的主鍵查找性能。不過(guò),它的輔助索引(Secondary Index, 也就是非主鍵索引)也會(huì)包含主鍵列,所以,如果主鍵定義的比較大,其他索引也將很大。如果想在表上定義 、很多索引,則爭(zhēng)取盡量把主鍵定義得小一些。InnoDB 不會(huì)壓縮索引。?

4、MyISAM與InnoDB的區(qū)別

????InnoDB和MyISAM是使用MySQL時(shí)最常用的兩個(gè)表類型,這兩個(gè)表類型各有優(yōu)劣,視具體應(yīng)用而定。

????基本的差別為:MyISAM類型不支持事務(wù)處理等高級(jí)處理,而InnoDB類型支持。MyISAM類型的表強(qiáng)調(diào)的是性能,其執(zhí)行數(shù)度比InnoDB類型更快,但不提供事務(wù)支持,而InnoDB提供事務(wù)支持已經(jīng)外部鍵等高級(jí)數(shù)據(jù)庫(kù)功能。

以下是一些細(xì)節(jié)和具體實(shí)現(xiàn)的差別:

(1)InnoDB不支持FULLTEXT類型的索引;
(2)InnoDB 中不保存表的具體行數(shù),也就是說(shuō),執(zhí)行select count(*) fromtable時(shí),InnoDB要掃描一遍整個(gè)表來(lái)計(jì)算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語(yǔ)句包含where條件時(shí),兩種表的操作是一樣的;
(3)對(duì)于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯(lián)合索引。
(4)DELETE FROM table時(shí),InnoDB不會(huì)重新建立表,而是一行一行的刪除;
(5)LOAD TABLE FROMMASTER操作對(duì)InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導(dǎo)入數(shù)據(jù)后再改成InnoDB表,但對(duì)于使用的額外的InnoDB特性(例如外鍵)的表不適用。
(5)主索引的區(qū)別,InnoDB的數(shù)據(jù)文件本身就是索引文件,而MyISAM的索引和數(shù)據(jù)是分開(kāi)的。
(6)輔助索引的區(qū)別:InnoDB的輔助索引data域存儲(chǔ)相應(yīng)記錄主鍵的值而不是地址。而MyISAM的輔助索引和主索引沒(méi)有多大區(qū)別。

????

  • MyISAM適合:

(1)做很多count 的計(jì)算;
(2)插入不頻繁,查詢非常頻繁;
(3)沒(méi)有事務(wù)。

  • InnoDB適合:

(1)要求事務(wù);
(2)表更新和查詢頻繁
(3)大尺寸的數(shù)據(jù)集趨向于選擇InnoDB引擎,因?yàn)樗С质聞?wù)處理和故障恢復(fù)。數(shù)據(jù)庫(kù)的大小決定了故障恢復(fù)的時(shí)間長(zhǎng)短,InnoDB可以利用事務(wù)日志進(jìn)行數(shù)據(jù)恢復(fù),這比較快。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461834.html

到了這里,關(guān)于MySQL的數(shù)據(jù)庫(kù)引擎介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)引擎

    MySQL數(shù)據(jù)庫(kù)之存儲(chǔ)引擎

    MySQL中的數(shù)據(jù)用各種不下同的技術(shù)存儲(chǔ)在文件中,每一種技術(shù)都使用不同的存儲(chǔ)機(jī)制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術(shù)以及配套的功能在MySQL中稱為存儲(chǔ)引擎。 存儲(chǔ)引擎是MySQL將數(shù)據(jù)存儲(chǔ)在文件系統(tǒng)中的存儲(chǔ)方式或者存儲(chǔ)格式。 存儲(chǔ)引擎是

    2024年02月03日
    瀏覽(95)
  • 【MySQL數(shù)據(jù)庫(kù) | 第十六篇】存儲(chǔ)引擎

    【MySQL數(shù)據(jù)庫(kù) | 第十六篇】存儲(chǔ)引擎

    目錄 ?前言: ?MySQL體系結(jié)構(gòu)圖: 存儲(chǔ)引擎簡(jiǎn)介: 1. InnoDB存儲(chǔ)引擎: 2. MyISAM存儲(chǔ)引擎: 3. MEMORY存儲(chǔ)引擎: 4. NDB Cluster存儲(chǔ)引擎: 5. ARCHIVE存儲(chǔ)引擎: 存儲(chǔ)引擎語(yǔ)法: ACID與行級(jí)鎖: ?總結(jié): 經(jīng)過(guò)前面15篇的學(xué)習(xí),我們已經(jīng)學(xué)完了SQL的基本語(yǔ)法內(nèi)容,大致掌握了數(shù)據(jù)庫(kù)的操作

    2024年02月08日
    瀏覽(116)
  • Mysql數(shù)據(jù)庫(kù)的存儲(chǔ)引擎——必看教程

    Mysql數(shù)據(jù)庫(kù)的存儲(chǔ)引擎——必看教程

    目錄 一、什么是存儲(chǔ)引擎 二、MySQL支持的存儲(chǔ)引擎 三、常見(jiàn)的存儲(chǔ)引擎 1.InnoDB存儲(chǔ)引擎 ????????2.MyISAM存儲(chǔ)引擎 ????????3.MEMORY存儲(chǔ)引擎 四、選擇存儲(chǔ)引擎 總結(jié) ????大家好,我是會(huì)飛的魚-blog,今天我來(lái)給大家介紹一下Mysql,有不足之處,請(qǐng)大家多多指教。感謝大

    2024年02月03日
    瀏覽(21)
  • 【后端面經(jīng)-數(shù)據(jù)庫(kù)】MySQL的存儲(chǔ)引擎簡(jiǎn)介

    【后端面經(jīng)-數(shù)據(jù)庫(kù)】MySQL的存儲(chǔ)引擎簡(jiǎn)介

    目錄 MySQL的存儲(chǔ)引擎 0. 存儲(chǔ)引擎的查看和修改 1. MyISAM 2. InnoDB 3. MEMORY 4. MERGE 5. 總結(jié) 6. 參考博客 mysql主要有四類存儲(chǔ)引擎,目前主要使用InnoDB作為存儲(chǔ)引擎。 查看當(dāng)前數(shù)據(jù)庫(kù)的默認(rèn)存儲(chǔ)引擎 查看當(dāng)前數(shù)據(jù)庫(kù)所支持的存儲(chǔ)引擎 查看支持事務(wù)處理的存儲(chǔ)引擎 設(shè)置新表的存儲(chǔ)引擎

    2024年02月08日
    瀏覽(31)
  • mysql數(shù)據(jù)庫(kù)介紹

    mysql數(shù)據(jù)庫(kù)介紹

    ?? 今天對(duì)mysql的一些基礎(chǔ)概念進(jìn)行講誒橫掃,如概念、特點(diǎn)、優(yōu)勢(shì)、發(fā)展歷史等等。對(duì)之前內(nèi)容感興趣的同學(xué)可以參考??: 鏈接: mysql學(xué)習(xí)之?dāng)?shù)據(jù)系統(tǒng)概述 ?? 讓我們開(kāi)始今日份的學(xué)習(xí)吧! 數(shù)據(jù)庫(kù)(database)就是一個(gè)存儲(chǔ)數(shù)據(jù)庫(kù)的倉(cāng)庫(kù),為了方便數(shù)據(jù)的存儲(chǔ)和管理,它將數(shù)據(jù)

    2024年01月23日
    瀏覽(29)
  • mysql 數(shù)據(jù)庫(kù) 基本介紹

    mysql 數(shù)據(jù)庫(kù) 基本介紹

    描述事物的符號(hào)記錄 包括數(shù)字,文字、圖形、圖像、聲音、檔案記錄氣 以“記錄”形式按統(tǒng)一的格式進(jìn)行存儲(chǔ) 1,結(jié)構(gòu)化的數(shù)據(jù) 即有固定格式和有限長(zhǎng)度的數(shù)據(jù)。例如填的表格就是結(jié)構(gòu)化的數(shù)據(jù),國(guó)籍:中華人民共和國(guó),民族:漢,性別:男,這都叫結(jié)構(gòu)化數(shù)據(jù) 2,非結(jié)構(gòu)化

    2024年03月23日
    瀏覽(23)
  • 【Mysql】數(shù)據(jù)庫(kù)第二講(數(shù)據(jù)庫(kù)中數(shù)據(jù)類型的介紹)

    【Mysql】數(shù)據(jù)庫(kù)第二講(數(shù)據(jù)庫(kù)中數(shù)據(jù)類型的介紹)

    數(shù)值越界測(cè)試: 說(shuō)明: 在MySQL中,整型可以指定是有符號(hào)的和無(wú)符號(hào)的,默認(rèn)是有符號(hào)的。 可以通過(guò)UNSIGNED來(lái)說(shuō)明某個(gè)字段是無(wú)符號(hào)的 無(wú)符號(hào)案例: 注意 注意:盡量不使用unsigned,對(duì)于int類型可能存放不下的數(shù)據(jù),int unsigned同樣可能存放不下,與其如此,還不如設(shè)計(jì)時(shí),將

    2024年02月09日
    瀏覽(25)
  • MySQL數(shù)據(jù)庫(kù)介紹流程(最新mysql)

    MySQL數(shù)據(jù)庫(kù)介紹流程(最新mysql)

    1、下載地址: http://dev,mysql.com/downloads/windows/installer/8.0html 2、就是直接搜索:mysql官方 ?msyql官方網(wǎng)站 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這里就安裝成功 ? ? ? ? ? ? ? ?點(diǎn)擊鼠標(biāo)右鍵,點(diǎn)擊屬性 ? 沒(méi)有話在這里,搜索高級(jí)系統(tǒng)打開(kāi)這個(gè) ? ? ? ? ? 安裝mysql找到文件 ? ? ? ?

    2024年02月13日
    瀏覽(32)
  • MySQL數(shù)據(jù)庫(kù),JDBC連接數(shù)據(jù)庫(kù)操作流程詳細(xì)介紹

    MySQL數(shù)據(jù)庫(kù),JDBC連接數(shù)據(jù)庫(kù)操作流程詳細(xì)介紹

    在學(xué)完 MySQL 和 Java 后,我們通常會(huì)嘗試使用 Java編譯器 連接 MySQL數(shù)據(jù)庫(kù),從而達(dá)到使用編譯器來(lái)操作數(shù)據(jù)庫(kù)的效果。連接的這個(gè)過(guò)程會(huì)用 JDBC 相關(guān)知識(shí),因此我把 JDBC 包的下載及導(dǎo)入流程,以及 JDBC 的使用流程整理下來(lái)分享給大家。 目錄 1. 啥是JDBC? 2. JDBC依賴包 2.1 依賴包

    2024年02月06日
    瀏覽(98)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包