愚公系列2022年01月 Mysql數(shù)據(jù)庫-MySQL存儲引擎

      網(wǎng)友投稿 755 2022-05-29

      一、MySQL存儲引擎

      體系結(jié)構(gòu)的概念

      任何一套系統(tǒng)當(dāng)中,每個部件都能起到一定的作用!

      MySQL的體系結(jié)構(gòu)

      體系結(jié)構(gòu)詳解

      客戶端連接

      支持接口:支持的客戶端連接,例如C、Java、PHP等語言來連接MySQL數(shù)據(jù)庫

      第一層:網(wǎng)絡(luò)連接層

      連接池:管理、緩沖用戶的連接,線程處理等需要緩存的需求。

      例如:當(dāng)客戶端發(fā)送一個請求連接,會從連接池中獲取一個連接進(jìn)行使用。

      第二層:核心服務(wù)層

      管理服務(wù)和工具:系統(tǒng)的管理和控制工具,例如備份恢復(fù)、復(fù)制、集群等。

      SQL接口:接受SQL命令,并且返回查詢結(jié)果。

      查詢解析器:驗證和解析SQL命令,例如過濾條件、語法結(jié)構(gòu)等。

      查詢優(yōu)化器:在執(zhí)行查詢之前,使用默認(rèn)的一套優(yōu)化機制進(jìn)行優(yōu)化sql語句

      緩存:如果緩存當(dāng)中有想查詢的數(shù)據(jù),則直接將緩存中的數(shù)據(jù)返回。沒有的話再重新查詢!

      第三層:存儲引擎層

      【愚公系列】2022年01月 Mysql數(shù)據(jù)庫-MySQL存儲引擎

      插件式存儲引擎:管理和操作數(shù)據(jù)的一種機制,包括(存儲數(shù)據(jù)、如何更新、查詢數(shù)據(jù)等)

      第四層:系統(tǒng)文件層

      文件系統(tǒng):配置文件、數(shù)據(jù)文件、日志文件、錯誤文件、二進(jìn)制文件等等的保存

      引擎的概念

      生活中,引擎就是整個機器運行的核心,不同的引擎具備不同的功能。

      MySQL存儲引擎的概念

      MySQL數(shù)據(jù)庫使用不同的機制存取表文件 , 機制的差別在于不同的存儲方式、索引技巧、鎖定水平以及廣泛的不同的功能和能力,在MySQL中 , 將這些不同的技術(shù)及配套的功能稱為存儲引擎

      在關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)的存儲是以表的形式存進(jìn)行儲的,所以存儲引擎也可以稱為表類型(即存儲和操作此表的類型)。

      Oracle , SqlServer等數(shù)據(jù)庫只有一種存儲引擎 , 而MySQL針對不同的需求, 配置MySQL的不同的存儲引擎 , 就會讓數(shù)據(jù)庫采取了不同的處理數(shù)據(jù)的方式和擴展功能。

      通過選擇不同的引擎 ,能夠獲取最佳的方案 , 也能夠獲得額外的速度或者功能,提高程序的整體效果。所以了解引擎的特性 , 才能貼合我們的需求 , 更好的發(fā)揮數(shù)據(jù)庫的性能。

      MySQL支持的存儲引擎

      MySQL5.7支持的引擎包括:InnoDB、MyISAM、MEMORY、Archive、Federate、CSV、BLACKHOLE等

      其中較為常用的有三種:InnoDB、MyISAM、MEMORY

      常用的存儲引擎

      MyISAM存儲引擎

      訪問快,不支持事務(wù)和外鍵。表結(jié)構(gòu)保存在.frm文件中,表數(shù)據(jù)保存在.MYD文件中,索引保存在.MYI文件中。

      InnoDB存儲引擎(MySQL5.5版本后默認(rèn)的存儲引擎)

      支持事務(wù) ,占用磁盤空間大 ,支持并發(fā)控制。表結(jié)構(gòu)保存在.frm文件中,如果是共享表空間,數(shù)據(jù)和索引保存在 innodb_data_home_dir 和 innodb_data_file_path定義的表空間中,可以是多個文件。如果是多表空間存儲,每個表的數(shù)據(jù)和索引單獨保存在 .ibd 中。

      MEMORY存儲引擎

      內(nèi)存存儲 , 速度快 ,不安全 ,適合小量快速訪問的數(shù)據(jù)。表結(jié)構(gòu)保存在.frm中。

      特性對比

      查詢數(shù)據(jù)庫支持的引擎

      -- 標(biāo)準(zhǔn)語法 SHOW ENGINES; -- 查詢數(shù)據(jù)庫支持的存儲引擎 SHOW ENGINES;

      -- 表含義: - support : 指服務(wù)器是否支持該存儲引擎 - transactions : 指存儲引擎是否支持事務(wù) - XA : 指存儲引擎是否支持分布式事務(wù)處理 - Savepoints : 指存儲引擎是否支持保存點

      查詢某個數(shù)據(jù)庫中所有數(shù)據(jù)表的引擎

      -- 標(biāo)準(zhǔn)語法 SHOW TABLE STATUS FROM 數(shù)據(jù)庫名稱; -- 查看db9數(shù)據(jù)庫所有表的存儲引擎 SHOW TABLE STATUS FROM db9;

      查詢某個數(shù)據(jù)庫中某個數(shù)據(jù)表的引擎

      -- 標(biāo)準(zhǔn)語法 SHOW TABLE STATUS FROM 數(shù)據(jù)庫名稱 WHERE NAME = '數(shù)據(jù)表名稱'; -- 查看db9數(shù)據(jù)庫中stu_score表的存儲引擎 SHOW TABLE STATUS FROM db9 WHERE NAME = 'stu_score';

      創(chuàng)建數(shù)據(jù)表,指定存儲引擎

      -- 標(biāo)準(zhǔn)語法 CREATE TABLE 表名( 列名,數(shù)據(jù)類型, ... )ENGINE = 引擎名稱; -- 創(chuàng)建db11數(shù)據(jù)庫 CREATE DATABASE db11; -- 使用db11數(shù)據(jù)庫 USE db11; -- 創(chuàng)建engine_test表,指定存儲引擎為MyISAM CREATE TABLE engine_test( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10) )ENGINE = MYISAM; -- 查詢engine_test表的引擎 SHOW TABLE STATUS FROM db11 WHERE NAME = 'engine_test';

      修改表的存儲引擎

      -- 標(biāo)準(zhǔn)語法 ALTER TABLE 表名 ENGINE = 引擎名稱; -- 修改engine_test表的引擎為InnoDB ALTER TABLE engine_test ENGINE = INNODB; -- 查詢engine_test表的引擎 SHOW TABLE STATUS FROM db11 WHERE NAME = 'engine_test';

      MyISAM :由于MyISAM不支持事務(wù)、不支持外鍵、支持全文檢索和表級鎖定,讀寫相互阻塞,讀取速度快,節(jié)約資源,所以如果應(yīng)用是以查詢操作和插入操作為主,只有很少的更新和刪除操作,并且對事務(wù)的完整性、并發(fā)性要求不是很高,那么選擇這個存儲引擎是非常合適的。

      InnoDB : 是MySQL的默認(rèn)存儲引擎, 由于InnoDB支持事務(wù)、支持外鍵、行級鎖定 ,支持所有輔助索引(5.5.5后不支持全文檢索),高緩存,所以用于對事務(wù)的完整性有比較高的要求,在并發(fā)條件下要求數(shù)據(jù)的一致性,讀寫頻繁的操作,那么InnoDB存儲引擎是比較合適的選擇,比如BBS、計費系統(tǒng)、充值轉(zhuǎn)賬等

      MEMORY:將所有數(shù)據(jù)保存在RAM中,在需要快速定位記錄和其他類似數(shù)據(jù)環(huán)境下,可以提供更快的訪問。MEMORY的缺陷就是對表的大小有限制,太大的表無法緩存在內(nèi)存中,其次是要確保表的數(shù)據(jù)可以恢復(fù),數(shù)據(jù)庫異常終止后表中的數(shù)據(jù)是可以恢復(fù)的。MEMORY表通常用于更新不太頻繁的小表,用以快速得到訪問結(jié)果。

      總結(jié):針對不同的需求場景,來選擇最適合的存儲引擎即可!如果不確定、則使用數(shù)據(jù)庫默認(rèn)的存儲引擎!

      MySQL 數(shù)據(jù)庫

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:JAVA開發(fā)常用Maven軟件管理工具【奔跑吧!JAVA】
      下一篇:華為云工業(yè)互聯(lián)網(wǎng)平臺助力拓斯達(dá):從自身實踐到賦能客戶的智能化之路
      相關(guān)文章
      精品国产香蕉伊思人在线在线亚洲一区二区 | 亚洲色无码一区二区三区| 久久久久精品国产亚洲AV无码| 亚洲精品网站在线观看不卡无广告| 亚洲欧美中文日韩视频| 亚洲丝袜美腿视频| 亚洲AV电影院在线观看| 久久精品国产96精品亚洲| 亚洲无人区午夜福利码高清完整版| 亚洲精品国产高清嫩草影院 | 亚洲午夜久久久久妓女影院| 成人午夜亚洲精品无码网站| 国产亚洲?V无码?V男人的天堂| 亚洲A∨午夜成人片精品网站| 麻豆亚洲AV成人无码久久精品 | 国产亚洲婷婷香蕉久久精品| 亚洲av无码不卡| 亚洲午夜久久久精品影院| 亚洲视频在线免费看| 亚洲av无码一区二区三区天堂古代| 亚洲伦理中文字幕| 亚洲六月丁香六月婷婷色伊人| 亚洲制服丝袜中文字幕| 亚洲欧洲无码AV不卡在线| 午夜亚洲福利在线老司机| 亚洲精品无码激情AV| 亚洲欧洲精品无码AV| 亚洲综合精品一二三区在线| 亚洲国产精品网站久久| 激情五月亚洲色图| 欧美色欧美亚洲另类二区| 亚洲精品无码激情AV| 亚洲国产精品嫩草影院在线观看| 亚洲av永久无码精品古装片| 亚洲精品在线电影| 亚洲日韩AV一区二区三区四区 | 亚洲成av人片在线天堂无| 亚洲精品线路一在线观看| 精品亚洲综合久久中文字幕| 久久av无码专区亚洲av桃花岛| 亚洲国产成人超福利久久精品|