欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySql中的存儲引擎和索引

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

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

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

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

二、什么是存儲引擎

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

MySQL支持的存儲引擎

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

三、操作

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

SHOW ENGINES;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

索引的分類

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

五、索引操作

創(chuàng)建索引:

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

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

查詢索引:

// 標(biāo)準(zhǔn)語法: 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)語法:DROP INDEX 索引名稱 ON 表名;

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

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

相關(guān)文章

  • Mysql中TIMESTAMPDIFF函數(shù)的語法與練習(xí)案例

    Mysql中TIMESTAMPDIFF函數(shù)的語法與練習(xí)案例

    在應(yīng)用時經(jīng)常要使用這兩個函數(shù)TIMESTAMPDIFF和TIMESTAMPADD,下面這篇文章主要給大家介紹了關(guān)于Mysql中TIMESTAMPDIFF函數(shù)的語法與練習(xí)案例的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • MySQL5.6免安裝版環(huán)境配置圖文教程

    MySQL5.6免安裝版環(huán)境配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了MySQL免安裝版環(huán)境配置圖文教程,很實用,感興趣的小伙伴們可以參考一下
    2016-05-05
  • mysql 8.0.17 安裝與使用教程圖解

    mysql 8.0.17 安裝與使用教程圖解

    這篇文章主要介紹了mysql 8.0.17 安裝與使用教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • MySQL中的undo日志

    MySQL中的undo日志

    這篇文章主要介紹了MySQL中的undo日志的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL的相關(guān)知識,感興趣的朋友可以了解下
    2020-11-11
  • mysql備份腳本 mysqldump使用方法詳解

    mysql備份腳本 mysqldump使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了mysql備份腳本(mysqldump),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • mysql中如何判斷是否支持分區(qū)

    mysql中如何判斷是否支持分區(qū)

    這篇文章主要介紹了mysql中如何判斷是否支持分區(qū)的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • MySQL服務(wù)無法啟動的解決辦法(親測有效)

    MySQL服務(wù)無法啟動的解決辦法(親測有效)

    用管理員身份打開cmd試圖啟動MySQL時出現(xiàn)服務(wù)無法啟動并提示服務(wù)沒有報錯任何錯誤,所以本文小編給大家介紹了一個親測有效的解決辦法,需要的朋友可以參考下
    2023-12-12
  • 基于更新SQL語句理解MySQL鎖定詳解

    基于更新SQL語句理解MySQL鎖定詳解

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫SQL更新鎖定的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • mySQL count多個表的數(shù)據(jù)實例詳解

    mySQL count多個表的數(shù)據(jù)實例詳解

    這篇文章通過實例給大家介紹了mySQL中count多個表的數(shù)據(jù),也就是多個表如何聯(lián)合查詢,文中通過項目中遇到的一個問題進(jìn)行分析和實現(xiàn),給出了詳細(xì)的示例代碼,相信對大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來一起看看吧。
    2016-11-11
  • 簡單了解MYSQL數(shù)據(jù)庫優(yōu)化階段

    簡單了解MYSQL數(shù)據(jù)庫優(yōu)化階段

    這篇文章主要介紹了簡單了解MYSQL數(shù)據(jù)庫優(yōu)化階段,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論