日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

mysql索引 物理文件_MySQL架构和MySQL索引

發(fā)布時間:2024/10/5 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql索引 物理文件_MySQL架构和MySQL索引 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.MySQL架構(gòu)

1.1邏輯架構(gòu)圖

1.1.1Connection Pool:連接池

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

*負責監(jiān)聽對MySQL Server的各種請求,接收連接請求,轉(zhuǎn)發(fā)所有連接請求到線程管理模塊。每一個連接上MySQL Server的客戶端請求都會被分配(或創(chuàng)建)一個連接線程為其單獨服務(wù)。

*而連接線程的主要工作就是負責MySQL Server與客戶端的通信,接受客戶端的命令請求,傳遞Server端的結(jié)果信息等。線程管理模塊則負責管理維護這些連接線程。包括線程的創(chuàng)建,線程的cache等。

1.1.2Parser:解析器

* SQL命令傳遞到解析器的時候會被解析器驗證和解析。

主要功能:

a .將SQL語句進行語義和語法的分析,分解成數(shù)據(jù)結(jié)構(gòu),然后按照不同的操作類型進行分類,然后做出針對性的轉(zhuǎn)發(fā)到后續(xù)步驟,以后SQL語句的傳遞和處理就是基于這個結(jié)構(gòu)的。

b.如果在分解構(gòu)成中遇到錯誤,那么就說明這個sql語句是不合理的

1.1.3Optimizer:查詢優(yōu)化器

* SQL語句在查詢之前會使用查詢優(yōu)化器對查詢進行優(yōu)化。

*它使用的是“選取-投影-聯(lián)接”策略進行查詢。

用一個例子就可以理解:select uid,name from user where gender = 1;

*這個select查詢先根據(jù)where語句進行選取,而不是先將表全部查詢出來以后再進行過濾

*這個select查詢先根據(jù)uid和name進行屬性投影,而不是將屬性全部取出以后再進行過濾

*將這兩個查詢條件聯(lián)接起來生成最終查詢結(jié)果

1.1.4Cache和Buffer: 查詢緩存

他的主要功能是將客戶端提交給MySQL的select請求的返回結(jié)果集cache到內(nèi)存中,與該query的一個hash值 做一個對應(yīng)。該Query所取數(shù)據(jù)的基表發(fā)生任何數(shù)據(jù)的變化之后,MySQL會自動使該query的Cache失效。在讀寫比例非常高的應(yīng)用系統(tǒng)中,Query Cache對性能的提高是非常顯著的。當然它對內(nèi)存的消耗也是非常大的。

如果查詢緩存有命中的查詢結(jié)果,查詢語句就可以直接去查詢緩存中取數(shù)據(jù)。這個緩存機制是由一系列小緩存組成的。比如表緩存,記錄緩存,key緩存,權(quán)限緩存等

1.1.5存儲引擎接口

存儲引擎接口模塊可以說是MySQL數(shù)據(jù)庫中最有特色的一點了。目前各種數(shù)據(jù)庫產(chǎn)品中,基本上只有MySQL可以實現(xiàn)其底層數(shù)據(jù)存儲引擎的插件式管理。這個模塊實際上只是 一個抽象類,但正是因為它成功地將各種數(shù)據(jù)處理高度抽象化,才成就了今天MySQL可插拔存儲引擎的特色。

注意:存儲引擎是基于表的,而不是數(shù)據(jù)庫。

1.2MySQL的存儲引擎

*多存儲引擎是mysql有別于其他數(shù)據(jù)庫的一大特性;

*存儲引擎是針對表的

* MySQL 5.5之后,默認的存儲引擎由MyISAM變?yōu)镮nnoDB。

* MySQL引擎: 可以理解為,MySQL的“文件系統(tǒng)”,只不過功能更加強大。

* MySQL引擎功能: 除了可以提供基本的存取功能,還有更多功能事務(wù)功能、鎖定、備份和恢復(fù)、優(yōu)化以及特殊功能。

*查看存儲引擎:show engines;

Innodb

Myisam

存儲文件

.frm表定義文件

.ibd數(shù)據(jù)文件

.frm表定義文件

.myd數(shù)據(jù)文件.myi索引文件

表鎖、行鎖

表鎖

事務(wù)

ACID

不支持

CRDU

讀、寫

讀多

count

掃表

專門存儲的地方

索引結(jié)構(gòu)

B+ Tree

B+ Tree

1.3MySQL物理結(jié)構(gòu)

1.3.1日志文件

MySQL通過日志記錄了數(shù)據(jù)庫操作信息和錯誤信息。常用的日志文件包括錯誤日志、二進制日志、查詢?nèi)罩?、慢查詢?nèi)罩竞虸nnoDB引擎在線Redo日志、中繼日志等。

錯誤日志(error log):記錄mysql服務(wù)器mysqld在啟動/關(guān)閉或運行過程中遇到的錯誤信息。(默認是開啟的,而且從5.5.7以后無法關(guān)閉錯誤日志)

查詢?nèi)罩?query log):

普通查詢?nèi)罩?general query log):記錄客戶端連接信息和執(zhí)行的sql語句信息。(默認情況下通用查詢?nèi)罩臼顷P(guān)閉的。)

慢查詢?nèi)罩?slow query log):記錄執(zhí)行時間超出指定值(long_query_time)的sql語句。(默認是關(guān)閉的。需要通過設(shè)置:slow_query_log=ON進行開啟。)

二進制日志(binary log):記錄數(shù)據(jù)被修改的相關(guān)信息。(默認是關(guān)閉的,需要通過配置:log-bin=mysql-bin進行開啟)

在配置文件中進行配置各日志路徑

1.3.2數(shù)據(jù)文件

查看MySQL數(shù)據(jù)文件:SHOW VARIABLES LIKE ‘%datadir%’;

l.frm文件:主要存放與表相關(guān)的數(shù)據(jù)信息,主要包括表結(jié)構(gòu)的定義信息

l.ibd和.ibdata文件:用來存儲InnoDB存儲引擎的表數(shù)據(jù)和索引信息

l.myd文件:主要用來存儲使用MyISAM存儲引擎的表數(shù)據(jù)信息。

l.myi文件:主要用來存儲使用MyISAM存儲引擎的表數(shù)據(jù)文件中任何索引的數(shù)據(jù)樹。

2.MySQL索引

一般情況下,在沒有建立索引的時候,mysql需要掃描全表及掃描10W條數(shù)據(jù)找這條數(shù)據(jù),如果我在nickname上建立索引,那么mysql只需要掃描一行數(shù)據(jù)及為我們找到這條nickname='css'的數(shù)據(jù),是不是感覺性能提升了好多咧....

mysql的索引分為單列索引(主鍵索引,唯一索引,普通索引)和組合索引.

單列索引:一個索引只包含一個列,一個表可以有多個單列索引.

組合索引:一個組合索引包含兩個或兩個以上的列,

2.1索引的創(chuàng)建

2.1.1單列索引

1.普通索引,這個是最基本的索引

其sql格式是 :

CREATE INDEX IndexName ON `TableName`(`字段名`(length))

或者

ALTER TABLE TableName ADD INDEX IndexName(`字段名`(length))

2.唯一索引,與普通索引類似,但是不同的是唯一索引要求所有的類的值是唯一的,這一點和主鍵索引一樣.但是他允許有空值,

其sql格式是:

CREATE UNIQUE INDEX IndexName ON `TableName`(`字段名`(length));

或者

ALTER?TABLE?TableName?ADD?UNIQUE?(column_list)

3.主鍵索引,不允許有空值,(在B+TREE中的InnoDB引擎中,主鍵索引起到了至關(guān)重要的地位)

主鍵索引建立的規(guī)則是int優(yōu)于varchar,一般在建表的時候創(chuàng)建,最好是與表的其他字段不相關(guān)的列或者是業(yè)務(wù)不相關(guān)的列.一般會設(shè)為int而且是AUTO_INCREMENT自增類型的

2.1.2組合索引

一個表中含有多個單列索引不代表是組合索引,通俗一點講 組合索引是:包含多個字段但是只有索引名稱

其sql格式是:

CREATE INDEX IndexName On `TableName`(`字段名`(length),`字段名`(length),...);

2.2索引的刪除

刪除索引的mysql格式:

DORP INDEX IndexName ON `TableName`;

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的mysql索引 物理文件_MySQL架构和MySQL索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。