溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MySQL存儲引擎MyISAM和InnoDB

發(fā)布時間:2020-04-10 00:48:37 來源:網(wǎng)絡(luò) 閱讀:472 作者:wx5d8ab22a0be5a 欄目:MySQL數(shù)據(jù)庫

存儲引擎概念介紹

  • MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件中,每一種技術(shù)都使用不同的存儲機(jī)制、索引技巧、鎖定水平并最終提供不同的功能和能力,這些不同的技術(shù)以及配套的功能在MySQL中稱為存儲引擎
  • 存儲引擎就是MySQL將數(shù)據(jù)存儲在文件系統(tǒng)中的存儲方式或者存儲格式————因此適用的場景也不一樣
  • 目前MySQL常用的兩種存儲引擎
    MyISAM
    InnoDB
    存儲引擎:一種基礎(chǔ)的驅(qū)動力,存儲技術(shù):存儲機(jī)制、索引技巧、鎖定水平。
  • mysql存儲引擎是mysql數(shù)據(jù)庫服務(wù)器中的組建,負(fù)責(zé)為數(shù)據(jù)庫執(zhí)行實(shí)際的數(shù)據(jù)I/O操作
  • 使用特殊存儲的主要優(yōu)點(diǎn)之一在于:僅需要提供特殊應(yīng)用所需的特性,數(shù)據(jù)庫中的系統(tǒng)開銷較小,具有更有效和更高的數(shù)據(jù)庫性能
  • mysql系統(tǒng)中,存儲引擎處于文件系統(tǒng)之上,在數(shù)據(jù)保存到數(shù)據(jù)文件之前會傳輸?shù)酱鎯σ?,之后按照各個存儲引擎的存儲格式進(jìn)行儲存
    MySQL存儲引擎MyISAM和InnoDB
    前后端的開發(fā)語言去提取拿取數(shù)據(jù),這就需要裝驅(qū)動,,具體的對象叫connector連接者
    connection pool 叫連接池,類似所謂的空閑的線程或者進(jìn)程去進(jìn)行連接,在里面回房多個被連接對象,以備連接,并且節(jié)省響應(yīng)時間,優(yōu)化訪問效率
    使用線程或者進(jìn)程去連接,鏈接需要媒介載體,就是sock通信文件,以提供pid文件,所有的線程都需要sock文件去管理,
    數(shù)據(jù)放在磁盤上,在邏輯層面上放在file system 中,管理數(shù)據(jù)需要management services
    sql interface 支持功能,ddl,dml,view
    parser 查詢功能query,object privilege 權(quán)限功能
    optimizer :access paths
    buffers :緩存區(qū)、global 全局
    files logs 日志文件:日志文件是數(shù)據(jù)庫的核心命脈,用來做主從復(fù)制,備份需要單獨(dú)備份
    MyISAM的簡單介紹
  • myisam存儲引擎是Mysql關(guān)系數(shù)據(jù)庫系統(tǒng)5.5版本之前默認(rèn)的存儲引擎,前身是ISAM
  • ISAM是一個定義明確且歷經(jīng)時間考驗(yàn)的數(shù)據(jù)表格管理方法,在設(shè)計(jì)之時就考慮到數(shù)據(jù)庫被查詢的次數(shù)要遠(yuǎn)大于更新的次數(shù)
    ISAM的特點(diǎn)
  • ISAM執(zhí)行讀取操作的速度很快
  • 而且不占用大量的內(nèi)存和存儲資源
  • 但是不支持事務(wù)處理
  • 而且不能夠容錯
  • ISAM更看重讀,讀>寫
    MyISAM的詳細(xì)介紹
  • MyISAM管理非事務(wù)表,是ISAM的擴(kuò)展格式
  • 提供索引和字段管理等大量功能
  • MyISAM使用一種表格鎖定的機(jī)制,以優(yōu)化多個并發(fā)的讀寫操作————在寫入數(shù)據(jù)時,無法讀,在讀的時候無法寫
  • MyISAM提供高速存儲和檢索,以及全文搜索能力,受到web開發(fā)的青睞
    MyISAM的特點(diǎn)
  • 不支持事務(wù)
  • 表級鎖定形式,數(shù)據(jù)在更新時鎖定整個表
  • 數(shù)據(jù)庫在讀寫過程中相互阻塞
    會在數(shù)據(jù)寫入的過程阻塞用戶數(shù)據(jù)的讀取
    也會在數(shù)據(jù)讀取的過程中阻塞用戶的數(shù)據(jù)寫入
  • 可通過key_buffer_size來設(shè)置緩存索引,提高訪問性能,減少磁盤IO的壓力
    但是緩存只會緩存索引文件,不會緩存數(shù)據(jù)
  • 采用MsISAM存儲引擎數(shù)據(jù)單獨(dú)寫入或讀取,速度過程較快且占用資源相對少
  • MyISAM存儲引擎不支持外鍵約束,只支持全文索引
  • 每個MyISAM在磁盤上存儲成三個文件,每一個文件的名字以表的名字開始,擴(kuò)展名指出文件類型
    MyISAM在磁盤上存儲的文件:
  • .frm文件,用來存儲表的定義結(jié)構(gòu)
  • 數(shù)據(jù)文件的擴(kuò)展名為.MYD(MYData)
  • 索引文件的擴(kuò)展名是.MYI(MYIndex)
    MyISAM使用的生產(chǎn)場景舉例
    公司業(yè)務(wù)不需要事務(wù)的支持
    一般單方面讀取/寫入數(shù)據(jù)比較多的業(yè)務(wù)
    MyISAM存儲引擎讀寫都比較頻繁的場景不適合
    使用讀寫并發(fā)訪問相對較低的業(yè)務(wù)
    數(shù)據(jù)修改相對較少的業(yè)務(wù)
    對數(shù)據(jù)業(yè)務(wù)一致性要求不是非常高的業(yè)務(wù)
    服務(wù)器硬件資源相對比較差————使用老服務(wù)器使用mysql時,就將引擎設(shè)置為MyISAM
    InnoDB特點(diǎn)介紹
  • 支持事務(wù):支持四個事務(wù)隔離級別
  • 行級鎖定,但是全表掃描時仍然會是表級鎖定
  • 讀寫阻塞與事務(wù)隔離級別相關(guān)
  • 具有非常高效的緩存特性:能緩存索引,也能緩存數(shù)據(jù)
  • 表與主鍵以簇的方式存儲
  • 支持分區(qū)、表空間,類似oracle數(shù)據(jù)庫
  • 支持外鍵約束,5.5以前不支持全文索引,5.5版本以后支持全文索引
  • 對硬件資源要求還是比較高的場合
    InnoDB使用生產(chǎn)場景分析
    業(yè)務(wù)需要事務(wù)的支持
    行級鎖定對高并發(fā)有很好的適應(yīng)能力,但須確保查詢是通過索引來完成
    業(yè)務(wù)數(shù)據(jù)更新較為頻繁的場景,如:論壇,微博等
    業(yè)務(wù)數(shù)據(jù)一致性要求較高,例如:銀行業(yè)務(wù)
    硬件設(shè)備內(nèi)存較大,利用Innodb交換的緩存能力來提高內(nèi)存利用利弊,減少IO的壓力
    企業(yè)選擇存儲引擎依據(jù)
    需要考慮每個存儲引擎提供了哪些不同的核心功能及應(yīng)用場景
    支持的字段和數(shù)據(jù)類型
    所有引擎都支持通用的數(shù)據(jù)類型
    但不是所有的引擎都支持其它的字段類型,如二進(jìn)制對象
    鎖定類型:不同的存儲引擎支持不同級別的鎖定
  • 表鎖定:MyISAM、InnoDB
  • 行鎖定:InnoDB
    索引的支持
    建立索引在搜索和回復(fù)數(shù)據(jù)庫中的數(shù)據(jù)的時候能夠顯著提高性能
    不同的存儲引擎提供不同的制作索引的技術(shù)
    有些存儲引擎根本不支持索引
    事務(wù)處理的支持
    事務(wù)處理功能通過提供在向表中更新和插入信息期間的可靠性
    可根據(jù)企業(yè)業(yè)務(wù)是否要支持事務(wù)選擇存儲引擎
    配置存儲引擎
    在企業(yè)中選擇好合適的存儲引擎之后,就可以進(jìn)行修改
    修改步驟
    1. 查看數(shù)據(jù)庫可配置的存儲引擎
    2. 查看表正在使用的存儲引擎
      3.配置存儲引擎為所選擇的類型
      使用show engines查看系統(tǒng)支持的存儲引擎
      MySQL存儲引擎MyISAM和InnoDB
      方法1:show table status from 庫名 where name=‘表名’;
      方法2:show create table 表名;
      切換存儲引擎需要切換表結(jié)構(gòu)
      MySQL存儲引擎MyISAM和InnoDB
      MySQL存儲引擎MyISAM和InnoDB
      \G 代替分號表示垂直顯示結(jié)果
      修改存儲引擎
      MySQL存儲引擎MyISAM和InnoDB
      實(shí)例
      MySQL存儲引擎MyISAM和InnoDB
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI