久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

MySQL學(xué)習(xí)筆記(7):存儲引擎

 新進(jìn)小設(shè)計(jì) 2022-03-14

本文更新于2019-06-23,使用MySQL 5.7,,操作系統(tǒng)為Deepin 15.4,。

和大多數(shù)數(shù)據(jù)庫不同,插件式存儲引擎是MySQL最重要的特性之一,。

InnoDB

InnoDB表提供事務(wù)安全,。

InnoDB表支持外鍵。創(chuàng)建外鍵時(shí),要求父表必須有對應(yīng)的索引,,子表在創(chuàng)建外鍵時(shí)也會自動創(chuàng)建對應(yīng)的索引,。如父表被子表創(chuàng)建了外鍵索引,則父表的索引禁止被刪除,。在導(dǎo)入多個表的數(shù)據(jù)時(shí),,或在執(zhí)行LOAD DATAALTER TABLE操作的時(shí)候,可以使用SET foreign_key_checks=0關(guān)閉外鍵檢查,。執(zhí)行完后,,使用SET foreign_key_checks=1重新打開。

InnoDB表自動增長列必需是索引,,或組合索引的第一列,。

InnoDB存儲表和索引有以下兩種方式:

  • 使用共享表空間存儲:表結(jié)構(gòu)保存在.frm文件中,數(shù)據(jù)和索引保存在innodb_data_home_dirinnodb_data_file_path定義的表空間中,,可以是多個文件,。
  • 使用多表空間存儲:表結(jié)構(gòu)保存在.frm文件中,每個表的數(shù)據(jù)和索引單獨(dú)保存在.ibd文件中,。如果是分區(qū)表,,則每個分區(qū)對應(yīng)單獨(dú)的.ibd文件,文件名為“表名+分區(qū)名”,,可以在創(chuàng)建分區(qū)的時(shí)候指定每個分區(qū)的文件位置,。共享表空間仍然是必須的,InnoDB把內(nèi)部數(shù)據(jù)詞典和在線重做日志放在共享表空間中,。

使用參數(shù)innodb_file_per_table可指定是否使用多表空間存儲,,并在重啟服務(wù)器后,只且只對新建的表生效,。使用多表空間存儲的表,,不能直接復(fù)制.frm和.ibd文件進(jìn)行恢復(fù),因?yàn)闆]有共享表空間的數(shù)據(jù)字典信息,。但如恢復(fù)表到原來的數(shù)據(jù)庫,,可使用ALTER TABLE tablename DISCARD TABLESPACEALTER TABLE tablename IMPORT TABLESPACE

InnoDB表沒有表元數(shù)據(jù)的緩存(如行數(shù),,因而執(zhí)行COUNT(*)較慢),。

MyISAM

MyISAM表不支持事務(wù),也不支持外鍵,。

MyISAM表自動增長列可為組合索引的非第一列,。

每個MyISAM在磁盤上存儲成3個文件,數(shù)據(jù)文件和索引文件可以放置在不同的目錄(需在創(chuàng)建表時(shí)通過DATA DIRECTORYINDEX DIRECTORY指定),。其文件名和表名相同,,擴(kuò)展名分別是:

  • .frm:存儲表定義,。
  • .MYD:MYData,存儲數(shù)據(jù),。
  • .MYI:MYIndex,,存儲索引。

MyISAM表支持3種不同的存儲格式:

  • 靜態(tài)表:默認(rèn)的存儲格式,,每條記錄都是固定長度的,。
  • 動態(tài)表:記錄不是固定長度的,包含變長字段,。
  • 壓縮表:由myisampack工具創(chuàng)建,,每條記錄都被單獨(dú)壓縮。

MyISAM表有表元數(shù)據(jù)的緩存(如行數(shù),,因而執(zhí)行COUNT(*)較快),。

MERGE

MERGE表是一組MyISAM表的組合,這些MyISAM表必須結(jié)構(gòu)完全相同,。MERGE表本身并沒有數(shù)據(jù),,對其的任何操作實(shí)際上是對內(nèi)部MyISAM表進(jìn)行的??梢詫ERGE表進(jìn)行DROP操作,其只是刪除表定義,,對內(nèi)部的表沒有影響,。

MERGE表在磁盤中保存兩個文件,文件名以表名開始,,.frm存儲表定義,,.MRG包含組合表的信息,包括MERGE表由哪些表組成,、插入新數(shù)據(jù)時(shí)的依據(jù),。可以通過修改.MRG文件來修改MERGE表,,但修改后需使用FLUSH TABLES刷新,。

MEMORY

MEMORY表的數(shù)據(jù)放在內(nèi)存中,每個MEMORY表只對應(yīng)一個.frm磁盤文件,。

在啟動MySQL服務(wù)時(shí)使用--init-file選項(xiàng),,把INSERT INTO ... SELECTLOAD DATA INFILE寫入文件中,就可在服務(wù)啟動時(shí)從持久穩(wěn)固的數(shù)據(jù)源裝載表,。定義MEMORY表的時(shí)候可通過MAX_ROWS指定表的最大行數(shù),。

NDB

NDB存儲引擎在MySQL Cluster中使用。

常用存儲引擎對比

特點(diǎn) InnoDB MyISAM MERGE MEMORY NDB
存儲限制 64TB 沒有
事務(wù)安全 支持
鎖機(jī)制 行鎖 表鎖 表鎖 表鎖 行鎖
B樹索引 支持 支持 支持 支持 支持
哈希索引 支持 支持
全文索引 支持
集群索引 支持
數(shù)據(jù)緩存 支持 支持 支持
索引緩存 支持 支持 支持 支持 支持
數(shù)據(jù)可壓縮 支持
空間使用 N/A
內(nèi)存使用 中等
批量插入速度
支持外鍵 支持

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多