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

MySQL的存儲引擎

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

1. 有哪些常見的存儲引擎?

  1. MyISAM:這種引擎是mysql最早提供的。這種引擎又可以分為靜態(tài)MyISAM、動態(tài)MyISAM 和壓縮MyISAM三種,不管是何種MyISAM表,目前它都不支持事務(wù),行級鎖和外鍵約束的功能。

  2. MyISAM Merge引擎:這種類型是MyISAM類型的一種變種。合并表是將幾個相同的MyISAM表合并為一個虛表。常應(yīng)用于日志和數(shù)據(jù)倉庫。

  3. InnoDB:InnoDB表類型可以看作是對MyISAM的進(jìn)一步更新產(chǎn)品,它提供了事務(wù)、行級鎖機(jī)制和外鍵約束的功能,也是目前MySQL 默認(rèn) 的存儲引擎。

  4. Memory(heap):這種類型的數(shù)據(jù)表只存在于內(nèi)存中。它使用散列索引,所以數(shù)據(jù)的存取速度非???。因?yàn)槭谴嬖谟趦?nèi)存中,所以這種類型常應(yīng)用于臨時表中。

  5. archive:這種類型只支持select 和 insert語句,而且不支持索引。常應(yīng)用于日志記錄和聚合分析方面。

2. MyISAM 和 InnoDB 的區(qū)別?

1)InnoDB 支持事務(wù),而 MyISAM 不支持。

2)InnoDB 支持外鍵,而 MyISAM 不支持。因此將一個含有外鍵的 InnoDB 表 轉(zhuǎn)為 MyISAM 表會失敗。

3)InnoDB 和 MyISAM 均支持 B+ Tree 數(shù)據(jù)結(jié)構(gòu)的索引。但 InnoDB 是聚集索引,而 MyISAM 是非聚集索引。

4)InnoDB 不保存表中數(shù)據(jù)行數(shù),執(zhí)行 select count(*) from table 時需要全表掃描。而 MyISAM 用一個變量記錄了整個表的行數(shù),速度相當(dāng)快(注意不能有 WHERE 子句)。

那為什么 InnoDB 沒有使用這樣的變量呢?因?yàn)镮nnoDB的事務(wù)特性,在同一時刻表中的行數(shù)對于不同的事務(wù)而言是不一樣的。

5)InnoDB 支持表、行(默認(rèn))級鎖,而 MyISAM 支持表級鎖。

InnoDB 的行鎖是基于索引實(shí)現(xiàn)的,而不是物理行記錄上。即訪問如果沒有命中索引,則也無法使用行鎖,將要退化為表鎖。

6)InnoDB 必須有唯一索引(如主鍵),如果沒有指定,就會自動尋找或生產(chǎn)一個隱藏列 Row_id 來充當(dāng)默認(rèn)主鍵,而 Myisam 可以沒有主鍵。

3. InnoDB引擎四大特性

  • 插入緩沖insert buffer)

  • 二次寫(double write)

  • 自適應(yīng)哈希索引(ahi)

  • 預(yù)讀(read ahead)

4.?InnoDB為何推薦使用自增主鍵?

自增 ID 可以保證每次插入時 B+ 樹索引是從右邊擴(kuò)展的,因此相比自定義 ID (如 UUID)可以避免 B+ 樹的頻繁合并和分裂。如果使用字符串主鍵和隨機(jī)主鍵,會使得數(shù)據(jù)隨機(jī)插入,效率比較差。

4.?存儲結(jié)構(gòu)

4.1. 什么是 InnoDB 的頁、區(qū)、段?

  • 頁(Page)

    • 首先,InnoDB 將物理磁盤劃分為頁(page),每頁的大小默認(rèn)為 16 KB,頁是最小的存儲單位。頁根據(jù)上層應(yīng)用的需要,如索引、日志等,分為很多的格式。我們主要說數(shù)據(jù)頁,也就是存儲實(shí)際數(shù)據(jù)的頁。

  • 區(qū)(Extent)

    • 如果只有頁這一個層次的話,頁的個數(shù)是非常多的,存儲空間的分配和回收都會很麻煩,因?yàn)橐S護(hù)這么多的頁的狀態(tài)是非常麻煩的。

    • 所以,InnoDB 又引入了區(qū)(Extent) 的概念。一個區(qū)默認(rèn)是 64 個連續(xù)的頁組成的,也就是 1MB。通過 Extent 對存儲空間的分配和回收就比較容易了。

  • 段(Segment)

    • 為什么要引入段呢,這要從索引說起。我們都知道索引的目的是為了加快查找速度,是一種典型的用空間換時間的方法。

    • B+ 樹的葉子節(jié)點(diǎn)存放的是我們的具體數(shù)據(jù),非葉子結(jié)點(diǎn)是索引頁。所以 B+ 樹將數(shù)據(jù)分為了兩部分,葉子節(jié)點(diǎn)部分和非葉子節(jié)點(diǎn)部分,也就我們要介紹的段 Segment,也就是說 InnoBD 中每一個索引都會創(chuàng)建兩個 Segment 來存放對應(yīng)的兩部分?jǐn)?shù)據(jù)。

    • Segment 是一種邏輯上的組織,其層次結(jié)構(gòu)從上到下一次為 Segment、Extent、Page。文章來源地址http://www.zghlxwxcb.cn/news/detail-583602.html

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

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

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

相關(guān)文章

  • mysql 數(shù)據(jù)庫引擎介紹

    mysql 數(shù)據(jù)庫引擎介紹

    一、數(shù)據(jù)庫引擎 ? ? 數(shù)據(jù)庫引擎是用于存儲、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。利用數(shù)據(jù)庫引擎可控制訪問權(quán)限并快速處理事務(wù),從而滿足企業(yè)內(nèi)大多數(shù)需要處理大量數(shù)據(jù)的應(yīng)用程序的要求。 使用數(shù)據(jù)庫引擎創(chuàng)建用于聯(lián)機(jī)事務(wù)處理或聯(lián)機(jī)分析處理數(shù)據(jù)的關(guān)系數(shù)據(jù)庫。這包括創(chuàng)建

    2024年02月14日
    瀏覽(89)
  • MySQL的數(shù)據(jù)庫引擎介紹

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

    ? ? 數(shù)據(jù)庫引擎就是操作數(shù)據(jù)庫的一段程序或程序段,用于存儲、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。 ????利用數(shù)據(jù)庫引擎可控制訪問權(quán)限并快速處理事務(wù),從而滿足企業(yè)內(nèi)大多數(shù)需要處理大量數(shù)據(jù)的應(yīng)用程序的要求。數(shù)據(jù)庫應(yīng)用項(xiàng)目是通過數(shù)據(jù)庫引擎與數(shù)據(jù)庫鏈接的。 ? ? 何為

    2024年02月06日
    瀏覽(97)
  • 數(shù)據(jù)庫(MySQL)的存儲過程

    數(shù)據(jù)庫(MySQL)的存儲過程

    存儲過程是事先經(jīng)過編譯并存儲在數(shù)據(jù)庫中的一段SQL 語句的集合,調(diào)用存儲過程可以簡化應(yīng)用開發(fā)人員的很多工作,減少數(shù)據(jù)在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間的傳輸,對于提高數(shù)據(jù)處理的效率是有好處的。 存儲過程思想上很簡單,就是數(shù)據(jù)庫SQL 語言層面的代碼封裝與重用。 特點(diǎn)

    2024年02月10日
    瀏覽(37)
  • 【MySQL 數(shù)據(jù)庫】9、存儲過程

    【MySQL 數(shù)據(jù)庫】9、存儲過程

    ?? 存儲過程是事先經(jīng)過編譯并存儲在數(shù)據(jù)庫中的 SQL 語句的集合,調(diào)用存儲過程可以簡化應(yīng)用開發(fā)人員的很多工作,減少數(shù)據(jù)在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間的傳輸,可以提高數(shù)據(jù)處理效率 ?? 存儲過程思想上很簡單:就是數(shù)據(jù)庫 SQL 語言層面的代碼封裝與重用 ?? 【封裝,復(fù)用

    2024年02月08日
    瀏覽(32)
  • MySQL數(shù)據(jù)庫——MySQL修改存儲過程(ALTER PROCEDURE)

    在實(shí)際開發(fā)過程中,業(yè)務(wù)需求修改的情況時有發(fā)生,所以修改 MySQL 中的存儲過程是不可避免的。 MySQL 中通過 ALTER PROCEDURE 語句來修改存儲過程。下面將詳細(xì)講解修改存儲過程的方法。 MySQL 中修改存儲過程的語法格式如下: ALTER PROCEDURE 存儲過程名 [ 特征 ... ] 特征 指定了存儲

    2024年02月04日
    瀏覽(20)
  • MySQL數(shù)據(jù)庫中的存儲過程以及存儲函數(shù)練習(xí)

    ?字段名? ? ?? 數(shù)據(jù)類型? ? ? ?主鍵?? ?外鍵?? ?非空 ? 唯一? ? 自增 ?? ???id? ? ? ? ? ? ?INT? ? ? ? ? ? ? ?是 ?? ? 否 ?? ? ?是? ? ? ?是? ? ? ? ? ?否 ?? name?? ?VARCHAR(50)? ?否 ?? ? 否 ?? ? ?是? ? ? ?否? ? ? ? ? ?否 ???glass ? VARCHAR(50)? ? ?否 ??

    2024年02月15日
    瀏覽(22)
  • mysql 海量數(shù)據(jù)設(shè)計(jì):對數(shù)據(jù)庫存儲有深入研究

    索引: 聚簇索引 二級索引 聯(lián)合索引:最左匹配原則、自動優(yōu)化順序 索引優(yōu)化方向: 存儲空間 主鍵選擇:自增主鍵、隨機(jī)主鍵、業(yè)務(wù)主鍵 如何設(shè)計(jì)一個雪花算法: 正數(shù) + 時間戳 + 機(jī)器id(固定) + 服務(wù)id + 序號 雪花算法優(yōu)點(diǎn): 高并發(fā)分布式環(huán)境下生成不重復(fù) id,每秒可生成百

    2023年04月24日
    瀏覽(23)
  • Redis緩存MySQL數(shù)據(jù)庫存儲二者如何保證數(shù)據(jù)一致性

    在大型互聯(lián)網(wǎng)應(yīng)用中,由于數(shù)據(jù)庫讀寫頻繁、壓力大等原因,我們通常會使用緩存來減少數(shù)據(jù)庫的訪問次數(shù),提高系統(tǒng)的性能。而Redis作為一個高性能的內(nèi)存數(shù)據(jù)庫,成為了緩存的首選方案之一。但是,緩存和數(shù)據(jù)庫之間存在數(shù)據(jù)一致性的問題,如何解決這個問題呢?本文將

    2023年04月19日
    瀏覽(27)
  • eclipse之MySQL數(shù)據(jù)庫與Web前段存儲交互

    eclipse之MySQL數(shù)據(jù)庫與Web前段存儲交互

    首先我們新建一個HTML文件和一個Servlet文件 新建一個文件Package文件,命名為com.sql? 將此文件拖入lib文件里(下載mysql-connector-java jar包_mysql-connector-java-5.7.33jar-CSDN博客) 在com.sql中創(chuàng)建以下文件 DBC文件內(nèi)容: 解釋 package com.sql; import java.sql.Connection; import java.sql.DriverManager; publ

    2024年04月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包