最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL 存儲(chǔ)引擎  MyISAM詳解(最新推薦)

 更新時(shí)間:2025年05月29日 15:48:52   作者:JhonKI  
使用 MyISAM 存儲(chǔ)引擎的表占用空間很小,但是由于使用表級(jí)鎖定,所以限制了讀/寫(xiě)操作的性能,通常用于中小型的Web應(yīng)用和數(shù)據(jù)倉(cāng)庫(kù)配置中的只讀或主要是讀的場(chǎng)景,這篇文章主要介紹了MySQL 存儲(chǔ)引擎  MyISAM詳解,需要的朋友可以參考下

MySQL 5.5 之前默認(rèn)的存儲(chǔ)引擎

使用 MyISAM 存儲(chǔ)引擎的表占用空間很小,但是由于使用表級(jí)鎖定,所以限制了讀/寫(xiě)操作的性能,通常用于中小型的Web應(yīng)用和數(shù)據(jù)倉(cāng)庫(kù)配置中的只讀或主要是讀的場(chǎng)景。

???‍??一、MyISAM 存儲(chǔ)引擎的特性

MyISAMInnoDB 的主要區(qū)別

  • 外鍵
  • 事務(wù)
  • Hash 索引
  • 鎖粒度

???‍??二、MyISAM 的主要優(yōu)勢(shì)

  • MyISAM 表的最大行數(shù)為(232)^2及(1.844E+19)行;
  • 每個(gè)MyISAM表最多可以創(chuàng)建64個(gè)索引,每個(gè)索引最多可以包含16個(gè)列;
  • 支持并發(fā)插入;
  • 通過(guò) CREATE table 創(chuàng)建表時(shí),指定 DATA DIRECTORY=PATHINDEXDIRECTORY=PATH 將數(shù)據(jù)文件和索引文件放在不同設(shè)備的不同目錄中,從而提高訪問(wèn)速度:
  • BLOBTEXT 數(shù)據(jù)類(lèi)型的列也可以被索引;
  • 在索引列中允許使用NULL值;
  • 如果 mysqld 啟動(dòng)時(shí)設(shè)置了 myisam_recover_options 系統(tǒng)變量,那么 MyISAM 表在打開(kāi)時(shí)進(jìn)行會(huì)自查,如果上一次表沒(méi)有正確關(guān)閉將會(huì)修復(fù);
  • 表中 VARCHARCHAR 列的長(zhǎng)度總和最多可達(dá)64KB。
  • UNIOUE 約束的長(zhǎng)度不受限制

???‍??

在MySOL8.0中 InnoDB 是默認(rèn)引擎,所以在創(chuàng)建表時(shí)需要指定 ENGINE=MyISAM

創(chuàng)建 MyISAM 表會(huì)根據(jù)表名生成三個(gè)不同后綴名文件,分別是以.MYD(MYData)為后綴的數(shù)據(jù)文件,以.MYI(MYIndex)為后綴的索引文件,以.sdi為后綴的表信息描述文件(JSON格式)
在8.0以前的版本中表信息描述文件是以.frm為后綴的二進(jìn)制文件

???‍??四、MyISAM 表存儲(chǔ)格式

  • MyISAM 表支持三種不同的存儲(chǔ)格式,
  • 其中 FIXED 靜態(tài)(固定)格式和 DYNAMIC 動(dòng)態(tài)格式,根據(jù)使用的列類(lèi)型自動(dòng)選擇,
  • 第三種是 壓縮格式,只能使用 myisampack 實(shí)用程序生成并且是只讀格式
  • 當(dāng)表中沒(méi)有 BLOBTEXT 數(shù)據(jù)類(lèi)型的列,在使用 CREATE TABLE或 ALTER TABLE 語(yǔ)句創(chuàng)建或修改表時(shí),可以結(jié)合 ROW_FORMAT表選項(xiàng)將表格式設(shè)置為FIXED或DYNAMIC。
  • 使用 myisamchk 實(shí)用工具對(duì)已壓縮的MyISAM進(jìn)行解壓操作,myisamchk --unpack。

4.1 靜態(tài)格式(Fixed-Length)表

  • 靜態(tài)格式MyISAM 表的默認(rèn)格式,當(dāng)表不包含可變長(zhǎng)度的列( VARCHAR、VARBINARY、BLOBTEXT)時(shí)使用,每行都使用固定數(shù)量的字節(jié)存儲(chǔ)。
  • MyISAM 的三種存儲(chǔ)格式中,靜態(tài)格式是最簡(jiǎn)單和最安全的(最不容易損壞),同時(shí)也是最快的磁盤(pán)格式,因?yàn)槊啃械拈L(zhǎng)度固定,根據(jù)索引中的行號(hào)乘以行長(zhǎng)度就可以計(jì)算出行位置,此外,讀取固定數(shù)量的行也非常的高效。
  • 靜態(tài)格式表具有以下特點(diǎn):
    • CHARVARCHAR 類(lèi)型的列用空格填充到指定的列寬;
    • BINARYVARBINARY 類(lèi)型的列用 0x00 字節(jié)填充到列寬每個(gè)允許為NULL的列,都用一個(gè) 1 BIT 的額外空間記錄當(dāng)前列是否為空;。
    • 速度非常快,且易于緩存;。
    • 崩潰后易于重建,因?yàn)樾卸嘉挥诠潭ㄎ恢?,?/li>
    • 通常需要比動(dòng)態(tài)格式表更多的磁盤(pán)空間;。

4.2 動(dòng)態(tài)格式表

當(dāng)表中包含可變長(zhǎng)度列(VARCHAR、VARBINARY、BLOBTEXT )或者在創(chuàng)建表時(shí)使用 ROW_FORMAT=DYNAMIC選項(xiàng),則表格式為動(dòng)態(tài)存儲(chǔ)格式

動(dòng)態(tài)格式表具有以下特點(diǎn):

  • 列類(lèi)型是字符串,且長(zhǎng)度大于等于4,長(zhǎng)度都是動(dòng)態(tài)的:
  • 每一行都有一個(gè)標(biāo)志來(lái)指示行有多長(zhǎng),當(dāng)因更新操作而變得更長(zhǎng)時(shí),數(shù)據(jù)可能存儲(chǔ)在不連續(xù)的空間,可以使用 OPTIMIZE TABLE table_name 語(yǔ)句或 myisamchk -r 對(duì)表進(jìn)行碎片整理;
  • 每個(gè)允許為NULL的列,都用一個(gè) 1 BIT 的額外空間記錄當(dāng)前列是否為空;
  • 每行前面都有一個(gè) bitmap(位圖),用來(lái)記錄包含空字符串或0的列,如果字符串類(lèi)型的列長(zhǎng)度為零,或者數(shù)字列的值0,則在位圖中標(biāo)記并且不會(huì)保存到磁盤(pán);
  • 通常磁盤(pán)空間占用比固定長(zhǎng)度表要少很多;。
  • 每行都單獨(dú)壓縮,每列都可能用單獨(dú)的方式進(jìn)行壓縮。

常用的壓縮方式:

  • 如果數(shù)值列的值為0,無(wú)論原始數(shù)據(jù)類(lèi)型是哪種都用一個(gè) BIT 類(lèi)型存儲(chǔ)。
  • 如果整數(shù)列中的值范圍較小,則盡可能使小的類(lèi)型存儲(chǔ)該列,比如:列中的值范圍在 -128 到 127 之間,即使原始類(lèi)型為 bigint(8bytes),也使用 TINYINT(1 byte) 類(lèi)型存儲(chǔ)
  • 如果列中只有一小組可能出現(xiàn)的值,則數(shù)據(jù)類(lèi)型轉(zhuǎn)換為 ENUM;

4.3 壓縮存儲(chǔ)格式

  • 壓縮存儲(chǔ)格式是使用 myisampack 工具生成的只讀格式數(shù)據(jù)表,壓縮表可以用 myisamchk 解壓縮。
  • 壓縮格式表具有以下特點(diǎn):
    • 壓縮表占用很少的磁盤(pán)空間,最大限度地減少了磁盤(pán)使用:
    • 可以用于固定長(zhǎng)度或動(dòng)態(tài)長(zhǎng)度
    • 行壓縮表是只讀的,因此不能在表中更新或添加數(shù)據(jù):

??總結(jié)

本篇博文對(duì) 【MySQL】存儲(chǔ)引擎 - MyISAM詳解 做了一個(gè)較為詳細(xì)的介紹,不知道對(duì)你有沒(méi)有幫助呢

到此這篇關(guān)于MySQL 存儲(chǔ)引擎 MyISAM詳解(最新推薦)的文章就介紹到這了,更多相關(guān)MySQL 存儲(chǔ)引擎 MyISAM內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Mysql Join語(yǔ)法以及性能優(yōu)化

    淺析Mysql Join語(yǔ)法以及性能優(yōu)化

    在講MySQL的Join語(yǔ)法前還是先回顧一下聯(lián)結(jié)的語(yǔ)法,呵呵,其實(shí)連我自己都忘得差不多了,那就大家一起溫習(xí)吧,這里我有個(gè)比較簡(jiǎn)便的記憶方法,內(nèi)外聯(lián)結(jié)的區(qū)別是內(nèi)聯(lián)結(jié)將去除所有不符合條件的記錄,而外聯(lián)結(jié)則保留其中部分。外左聯(lián)結(jié)與外右聯(lián)結(jié)的區(qū)別在于如果用A左聯(lián)結(jié)B則A中所有記錄都會(huì)保留在結(jié)果中,此時(shí)B中只有符合聯(lián)結(jié)條件的記錄,而右聯(lián)結(jié)相反,這樣也就不會(huì)混淆了。
    2014-05-05
  • clickhouse復(fù)雜時(shí)間格式的轉(zhuǎn)換方式

    clickhouse復(fù)雜時(shí)間格式的轉(zhuǎn)換方式

    這篇文章主要介紹了clickhouse復(fù)雜時(shí)間格式的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Mysql 8 新特性 window functions 的作用

    Mysql 8 新特性 window functions 的作用

    MySQL是眾多網(wǎng)站技術(shù)棧中的標(biāo)準(zhǔn)配置,是廣受歡迎的開(kāi)源數(shù)據(jù)庫(kù),已經(jīng)推出了8.0的第一個(gè)候選發(fā)行版本。接下來(lái)通過(guò)本文給大家分享Mysql 8 新特性 window functions 的作用,需要的朋友參考下吧
    2017-11-11
  • mysql實(shí)現(xiàn)查詢數(shù)據(jù)并根據(jù)條件更新到另一張表的方法示例

    mysql實(shí)現(xiàn)查詢數(shù)據(jù)并根據(jù)條件更新到另一張表的方法示例

    這篇文章主要介紹了mysql實(shí)現(xiàn)查詢數(shù)據(jù)并根據(jù)條件更新到另一張表的方法,結(jié)合實(shí)例形式分析了mysql多表關(guān)聯(lián)查詢、更新等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • MySQL自定義函數(shù)簡(jiǎn)單用法示例

    MySQL自定義函數(shù)簡(jiǎn)單用法示例

    這篇文章主要介紹了MySQL自定義函數(shù)簡(jiǎn)單用法,結(jié)合實(shí)例形式分析了mysql自定義函數(shù)的基本定義、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • 詳細(xì)解讀分布式鎖原理及三種實(shí)現(xiàn)方式

    詳細(xì)解讀分布式鎖原理及三種實(shí)現(xiàn)方式

    這篇文章從三種基于不同形式的分布式鎖的實(shí)現(xiàn),數(shù)據(jù)庫(kù)、緩存和zookeeper,內(nèi)容比較詳細(xì),具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Mysql數(shù)據(jù)庫(kù)介紹及mysql顯示命令

    Mysql數(shù)據(jù)庫(kù)介紹及mysql顯示命令

    這篇文章主要介紹了Mysql數(shù)據(jù)庫(kù)介紹及mysql顯示命令 的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Navicat導(dǎo)出MySQL數(shù)據(jù)庫(kù)表結(jié)構(gòu)到Excel過(guò)程

    Navicat導(dǎo)出MySQL數(shù)據(jù)庫(kù)表結(jié)構(gòu)到Excel過(guò)程

    本文介紹了如何將數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)導(dǎo)出到Excel文件中,包括使用SQL語(yǔ)句查詢表結(jié)構(gòu)并使用Navicat工具導(dǎo)出到Excel文件的步驟,總結(jié):將數(shù)據(jù)庫(kù)表結(jié)構(gòu)導(dǎo)出到Excel文件中,便于后續(xù)使用或存檔
    2026-01-01
  • MySQL實(shí)現(xiàn)JDBC詳細(xì)步驟

    MySQL實(shí)現(xiàn)JDBC詳細(xì)步驟

    JDBC?是?Java?訪問(wèn)數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)規(guī)范,真正怎么操作數(shù)據(jù)庫(kù)還需要具體的實(shí)現(xiàn)類(lèi),也就是數(shù)據(jù)庫(kù)驅(qū)動(dòng),本文給大家介紹MySQL實(shí)現(xiàn)JDBC詳細(xì)講解,感興趣的朋友一起看看吧
    2022-02-02
  • MySQL中g(shù)roup by與max()一起使用的坑

    MySQL中g(shù)roup by與max()一起使用的坑

    最近在做一個(gè)項(xiàng)目,發(fā)現(xiàn)用之前SQL語(yǔ)句導(dǎo)出的余額與客戶人員最近消費(fèi)記錄所顯示的余額不一致,本文就來(lái)了解一下這個(gè)錯(cuò)誤,感興趣的可以了解一下
    2023-08-08

最新評(píng)論

综艺| 轮台县| 正宁县| 太湖县| 太湖县| 西乌| 桐梓县| 定襄县| 汝州市| 宁夏| 拉孜县| 长汀县| 新巴尔虎左旗| 呈贡县| 如东县| 普格县| 安塞县| 望谟县| 桓仁| 颍上县| 舞阳县| 孝感市| 航空| 榆树市| 英超| 新巴尔虎左旗| 白朗县| 汉源县| 福鼎市| 华亭县| 普兰县| 陵川县| 兴海县| 临夏县| 阿拉善右旗| 剑河县| 镇江市| 山阳县| 阿克| 唐河县| 乐昌市|