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

MySql中的存儲(chǔ)引擎和索引

 更新時(shí)間:2022年08月03日 08:25:31   作者:面屏思過???????  
這篇文章主要介紹了MySql中的存儲(chǔ)引擎和索引,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

一、MySql的邏輯結(jié)構(gòu)

MySQL體系結(jié)構(gòu)分為四層:分別是連接層、服務(wù)層、存儲(chǔ)引擎層、系統(tǒng)文件層。

  • 連接層又稱為客戶端連接器(Client Connectors):提供與MySQL服務(wù)器建立的支持。連接池:管理、緩沖用戶的連接,線程處理等需要緩存的需求。
  • 服務(wù)層是MySQL Server的核心:主要包含系統(tǒng)管理和控制工具、SQL接口、解析器、查詢優(yōu)化器、緩存。
  • 存儲(chǔ)引擎層:負(fù)責(zé)MySQL中數(shù)據(jù)的存儲(chǔ)與提取,與底層系統(tǒng)文件進(jìn)行交互。MySQL存儲(chǔ)引擎是插件式的,不同的存儲(chǔ)引擎具備不同的功能,可以根據(jù)自己的需要進(jìn)行選擇,最常見的是MyISAM和InnoDB。插件式存儲(chǔ)引擎:管理和操作數(shù)據(jù)的一種機(jī)制,包括(存儲(chǔ)數(shù)據(jù)、如何更新、查詢數(shù)據(jù)等)
  • 系統(tǒng)文件層:將數(shù)據(jù)庫(kù)的數(shù)據(jù)和日志存儲(chǔ)在文件系統(tǒng)之上,并完成與存儲(chǔ)引擎的交互,是文件的物理存儲(chǔ)層。主要包含日志文件(redolog,undo.log),數(shù)據(jù)文件,索引文件,二進(jìn)制日志,錯(cuò)誤日志,配置文件,pid 文件,socket 文件等。

二、什么是存儲(chǔ)引擎

MySql數(shù)據(jù)庫(kù)使用不同的機(jī)制存取表文件,有不同的存儲(chǔ)方式,索引技巧,鎖定水平且廣泛的功能和能力。將這些不同的技術(shù)及配套的功能稱為存儲(chǔ)引擎。

MySQL支持的存儲(chǔ)引擎

MySQL5.7支持的引擎包括:InnoDB、MyISAM、MEMORY、Archive、Federate、CSV、BLACKHOLE等,其中較為常用的有三種:InnoDB、MyISAM、MEMORY。

三、操作

查詢數(shù)據(jù)庫(kù)支持的存儲(chǔ)引擎:

SHOW ENGINES;

查詢某個(gè)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)表的存儲(chǔ)引擎:

// 標(biāo)準(zhǔn)語(yǔ)法: SHOW TABLE STATUS FROM 數(shù)據(jù)庫(kù)名稱;

// 查詢db4數(shù)據(jù)庫(kù)所有表的存儲(chǔ)引擎
SHOW TABLE STATUS FROM db4;

查詢某個(gè)數(shù)據(jù)庫(kù)中某個(gè)表的存儲(chǔ)引擎:

//標(biāo)準(zhǔn)語(yǔ)法: SHOW TABLE STATUS FROM 數(shù)據(jù)庫(kù)名稱 WHERE NAME = '數(shù)據(jù)表名稱';

// 查看db4數(shù)據(jù)庫(kù)中user表的存儲(chǔ)引擎
SHOW TABLE STATUS FROM db2 WHERE NAME='user';

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

// 標(biāo)準(zhǔn)語(yǔ)法:CREATE TABLE 表名( 列名,數(shù)據(jù)類型, ... )ENGINE = 引擎名稱;

CREATE TABLE engine_test(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(10)
)ENGINE=MYISAM;

修改數(shù)據(jù)表的存儲(chǔ)引擎:

// 標(biāo)準(zhǔn)語(yǔ)法: ALTER TABLE 表名 ENGINE = 引擎名稱;

// 修改engine_test表的存儲(chǔ)引擎為InnoDB
ALTER TABLE engine_test ENGINE=INNODB;

四、數(shù)據(jù)庫(kù)的索引

MySQL數(shù)據(jù)庫(kù)中的索引:是幫助MySQL高效獲取數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)!所以,索引的本質(zhì)就是數(shù)據(jù)結(jié)構(gòu)。

在表數(shù)據(jù)之外,數(shù)據(jù)庫(kù)系統(tǒng)還維護(hù)著滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式指向數(shù)據(jù), 這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實(shí)現(xiàn)高級(jí)查找算法,這種數(shù)據(jù)結(jié)構(gòu)就是索引。

索引的分類

  • 普通索引: 最基本的索引,它沒有任何限制。
  • 唯一索引:索引列的值必須是唯一,允許有控制,如果是組合索引,則列值組合必須唯一。
  • 主鍵索引:一種特殊的唯一索引,不允許有空值。一般在建表是同時(shí)創(chuàng)建主鍵索引。
  • 組合索引:將單列索引進(jìn)行組合
  • 外鍵索引: 只有InnoDB引擎支持外鍵索引,用來保證數(shù)據(jù)的一致性、完整性和實(shí)現(xiàn)聯(lián)級(jí)操作。
  • 全文索引:快速匹配全部文檔的方式。InnoDB引擎5.6版本后才支持全文索引。MEMORY引擎不支持。

五、索引操作

創(chuàng)建索引:

CREATE [UNIQUE|FULLTEXT] INDEX 索引名稱
	[USING 索引類型]  -- 默認(rèn)是BTREE
	ON 表名(列名...);
       
// 為student表中的name列創(chuàng)建一個(gè)普通索引
CREATE INDEX idx_name ON student(NAME);

//為student表中的age列創(chuàng)建一個(gè)唯一索引
CREATE UNIQUE INDEX idx_age ON student(age);

查詢索引:

// 標(biāo)準(zhǔn)語(yǔ)法: SHOW INDEX FROM 表名;

// 查詢student表中的索引  (主鍵列自帶主鍵索引)
SHOW INDEX FROM student;

添加索引:

ALTER添加索引
-- 普通索引
ALTER TABLE 表名 ADD INDEX 索引名稱(列名);

-- 組合索引
ALTER TABLE 表名 ADD INDEX 索引名稱(列名1,列名2,...);

-- 主鍵索引
ALTER TABLE 表名 ADD PRIMARY KEY(主鍵列名); 

-- 外鍵索引(添加外鍵約束,就是外鍵索引)
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名 FOREIGN KEY (本表外鍵列名) REFERENCES 主表名(主鍵列名);

-- 唯一索引
ALTER TABLE 表名 ADD UNIQUE 索引名稱(列名);

-- 全文索引
ALTER TABLE 表名 ADD FULLTEXT 索引名稱(列名);

刪除索引:

// 標(biāo)準(zhǔn)語(yǔ)法:DROP INDEX 索引名稱 ON 表名;

// 刪除idx_score索引
DROP INDEX idx_score ON student;

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

相關(guān)文章

最新評(píng)論

公安县| 依兰县| 韶关市| 青岛市| 永清县| 博客| 合肥市| 大悟县| 南陵县| 拉萨市| 老河口市| 莱芜市| 溧阳市| 湟源县| 青川县| 绥芬河市| 江源县| 安康市| 青田县| 碌曲县| 伊川县| 新巴尔虎右旗| 原平市| 壤塘县| 黄骅市| 名山县| 锦州市| 巴中市| 蒙山县| 静海县| 天台县| 扬中市| 雅安市| 丹江口市| 灌阳县| 淅川县| 墨脱县| 曲阳县| 临海市| 武陟县| 余庆县|