欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:adb MySQL的體系架構(gòu)

柚子快報激活碼778899分享:adb MySQL的體系架構(gòu)

http://yzkb.51969.com/

文章目錄

前言MySQL的Server層MySQL的存儲引擎1)InnoDB 存儲引擎2)MyISAM 存儲引擎3)Memory 存儲引擎

前言

在學(xué)習(xí)一種事務(wù)之前,我們需要先了解事物的基本組成結(jié)構(gòu),清楚了事物的基本組成結(jié)構(gòu)之后,我們才能更深入的了解相關(guān)操作,那么今天我將為大家介紹MySQL的體系架構(gòu)。

MySQL數(shù)據(jù)庫的服務(wù)端主要分為Server層和存儲引擎層,接下來我將以這兩層為著重點為大家介紹MySQL的體系架構(gòu)。

MySQL的Server層

MySQL的Server層照顧要有七個組件:

MySQL 向外提供的交互接口(Connectors)連接池組件(Connection Pool)管理服務(wù)組件和工具組件(Management Service & Utilities)SQL 接口組件(SQL Interface)查詢分析器組件(Parser)優(yōu)化器組件(Optimizer)查詢緩存組件(Query Caches & Buffers)

1)MySQL向外提供的交互接口(Connectors) Connectors 組件是 MySQL 向外提供的交互組件,如Java,.NET,PHP等語言可以通過該組件來操作 MySQL 語句,實現(xiàn)與 MySQL 的交互。建立連接之后,可以通過show processlist 語句來查看已經(jīng)建立的連接。 如果客戶端一段時間內(nèi)沒有活躍行為,那么連接器在默認(rèn)的8個小時后會主動斷開連接。加果在連接被斷開之后,客戶端再次發(fā)送請求的話,就會收到一個錯誤提醒:Lost connection to MySQL server during query。

客戶端連接到MySQL數(shù)據(jù)庫上時,根據(jù)連接時間的長短可以分為:短連接和長連接。短連接比較簡單,指每次查詢之后會斷開,再次查詢需要重新建立連接,因此使用短連接的成本較高;長連接指長時間連接到MySOL數(shù)據(jù)庫上并執(zhí)行數(shù)據(jù)庫操作,因此長連接會導(dǎo)致出現(xiàn)內(nèi)存溢出的問題從而使MySQL異常重啟。

在使用長連接時,可以使用客戶端函數(shù)mysql_reset_connection()來重新初始化連接資源。這個過程不需要重連和重新做權(quán)限驗證,但是會將連接恢復(fù)到剛剛創(chuàng)建完時的狀態(tài)。

2)連接池組件(Connection Pool)

負(fù)責(zé)監(jiān)聽客戶端向MySQL服務(wù)器端的各種請求,接收請求、轉(zhuǎn)發(fā)請求到目標(biāo)模塊。每個成功連接MySQL服務(wù)器端的客戶請求都會被創(chuàng)建或分配一個線程,該線程負(fù)責(zé)客戶端與MySQL服務(wù)器端的通信,接收客戶端發(fā)送的命令,傳遞服務(wù)器端的結(jié)果信息等。

3)管理服務(wù)組件和工具組件(Management Service &Utilities)

提供對MySOL的集成管理,如備份(Backup)、恢復(fù)(Recovery)、安全管理(Security)等。

4)SQL接口組件(SQL Interface)

接收用戶SQL命令,如DML、DDL和存儲過程等,并將最終結(jié)果返回給用戶。

5)查詢分析器組件(Parser)

系統(tǒng)在執(zhí)行輸入語句之前,必須分析出語句想要干什么。例如:首先通過select關(guān)鍵字得知這是一條查詢命令,還包括分析要查詢的是哪張表以及查詢條件是什么。同時,分析器必須分析輸入語句的語法正確性。如果SQL中存在語法的錯誤,則查詢分析器組件將返回提示信息“You have an error in your SQL syntax”。

6)優(yōu)化器組件(Optimizer)

優(yōu)化器是MySQL用來對輸人語句在執(zhí)行之前所做的最后一步優(yōu)化。優(yōu)化內(nèi)容包括:是否選擇索引、選擇哪個索引、多表查詢的聯(lián)合順序等。每一種執(zhí)行方法的邏輯結(jié)果是一樣的,但是執(zhí)行的效率會有不同,而優(yōu)化器的作用就是決定選擇使用哪一種方案。

7)查詢緩存組件(Query Caches & Buffers) 這個查詢緩存是比較容易理解的。在每一次查詢時,MySQL 都先去看看是否命中緩存,命中則直接返回,提高了系統(tǒng)的響應(yīng)速度。但是這個功能有一個相當(dāng)大的弊病,那就是一旦這個表中數(shù)據(jù)發(fā)生更改,那么這張表對應(yīng)的所有緩存都會失效。

對于更新壓力大的數(shù)據(jù)庫來說,查詢緩存的命中率會非常低。除非業(yè)務(wù)系統(tǒng)就只有一張靜態(tài)表,很長時間才會更新一次。比如,一個系統(tǒng)配置表,那這張表上的查詢才適合使用查詢緩存。所以在生產(chǎn)系統(tǒng)中,建議關(guān)閉該功能。

在MySQL8.0版本之前,可以通過將參數(shù)“query_cachetype”設(shè)置成OFF,來關(guān)閉查詢緩存的功能。但是在MySQL8.0版本之后,直接刪掉了這部分的功能。

show variables like '% query_cache% ';

MySQL的存儲引擎

MySQL 存儲引擎層負(fù)責(zé)數(shù)據(jù)的存儲和提取,其架構(gòu)模式是插件式的,支持InnoDB、MyISAM、Memory、Archive、NDB Cluster等多個存儲引擎。最常用的是InnoDB,我將為大家詳細(xì)介紹InnoDb、MyISAM 和 Mymery 存儲引擎。

我們可以使用 show create table 表名; 來查看創(chuàng)建表時使用的存儲引擎。

create table test (id int);

show create table test;

1)InnoDB 存儲引擎

InnoDB是MySQL的默認(rèn)存儲引擎,它支持ACID(原子性、一致性、隔離性和持久性)事務(wù),并提供了行級鎖定、外鍵約束和崩潰恢復(fù)等功能。它適用于大多數(shù)應(yīng)用場景,特別是需要事務(wù)支持和高并發(fā)讀寫操作的應(yīng)用。

它具有以下特性:

事務(wù)支持:InnoDB引擎支持事務(wù)的ACID屬性,確保了數(shù)據(jù)的原子性、一致性、隔離性和持久性。這意味著可以使用BEGIN、COMMIT和ROLLBACK語句來管理事務(wù),保證數(shù)據(jù)的完整性和一致性。行級鎖定:InnoDB使用行級鎖來處理并發(fā)訪問和修改數(shù)據(jù),而不是表級鎖。這意味著多個事務(wù)可以同時訪問同一表的不同行,提高了并發(fā)性能和并發(fā)控制。外鍵約束:InnoDB支持外鍵約束,可以在數(shù)據(jù)庫層面實現(xiàn)數(shù)據(jù)的一致性和完整性。它提供了CASCADE、RESTRICT和SET NULL等選項來處理外鍵關(guān)系。崩潰恢復(fù):InnoDB具有崩潰恢復(fù)的能力,即使在系統(tǒng)崩潰或電源故障的情況下,也可以保證數(shù)據(jù)的完整性。它通過事務(wù)日志(redo log)來恢復(fù)未完成的事務(wù)和恢復(fù)已提交的事務(wù)。自動增長列:InnoDB支持自動增長列,可以為表中的某一列指定自動遞增的整數(shù)值,簡化了數(shù)據(jù)插入操作?;貪L段:InnoDB通過回滾段(Rollback Segment)來存儲未提交事務(wù)的數(shù)據(jù),以便在需要時進(jìn)行回滾操作??梢栽诰€熱備份:InnoDB引擎支持在線熱備份,可以在不停止MySQL服務(wù)器的情況下備份數(shù)據(jù)庫。支持MVCC(多版本并發(fā)控制):InnoDB使用多版本并發(fā)控制來處理并發(fā)事務(wù),在讀操作的同時允許寫操作,并通過行版本來實現(xiàn)數(shù)據(jù)的隔離性和一致性。高性能:InnoDB引擎通過使用緩沖池(Buffer Pool)來緩存熱門數(shù)據(jù)和索引,提高讀取數(shù)據(jù)的性能。

2)MyISAM 存儲引擎

MyISAM是MySQL的另一個常見的存儲引擎,它不支持事務(wù)和行級鎖定,但具有良好的性能。MyISAM適用于主要是讀取操作的應(yīng)用,如數(shù)據(jù)倉庫、歸檔和非事務(wù)性的應(yīng)用。

它具有以下特性:

快速讀取速度:MyISAM存儲引擎在讀取數(shù)據(jù)時非常高效,對于主要是讀取操作的應(yīng)用性能表現(xiàn)較好。這是因為MyISAM表以表級鎖定的方式處理并發(fā),讀操作可以并發(fā)執(zhí)行,不會有行級鎖定帶來的爭用。支持全文索引:MyISAM存儲引擎對全文索引提供了良好的支持,可以通過創(chuàng)建全文索引提供高效的文本搜索能力。節(jié)省磁盤空間:相較于InnoDB存儲引擎,MyISAM通常在磁盤占用方面更加節(jié)省空間,這是因為它不支持事務(wù)、行級鎖定和崩潰恢復(fù)等功能,減少了存儲額外的元數(shù)據(jù)和日志。表級鎖定:MyISAM存儲引擎使用表級鎖定,這意味著一個寫操作鎖定整個表,因此在寫操作頻繁的情況下可能會導(dǎo)致并發(fā)性能下降。不支持事務(wù)和外鍵:MyISAM存儲引擎不支持事務(wù)操作,也不支持外鍵約束。這意味著在使用MyISAM時,你無法使用BEGIN、COMMIT和ROLLBACK等事務(wù)操作,也無法定義外鍵約束來維護(hù)數(shù)據(jù)的完整性。不支持崩潰恢復(fù):MyISAM存儲引擎沒有崩潰恢復(fù)的能力,這意味著如果MySQL服務(wù)器在寫操作過程中崩潰,可能會導(dǎo)致數(shù)據(jù)的不一致。自動維護(hù)索引統(tǒng)計信息:MyISAM存儲引擎會自動維護(hù)表的索引統(tǒng)計信息,這些統(tǒng)計信息用于優(yōu)化查詢執(zhí)行計劃。多用途:MyISAM存儲引擎適用于主要是讀取操作的應(yīng)用場景,如報表、日志分析和靜態(tài)網(wǎng)站等。

我們可以在創(chuàng)建表的時候指定存儲引擎。

create table 表名 ( ) engine = 存儲引擎名

create table test1 (id int) engine = myisam;

show create table test1;

正是因為 MyISAM 存儲引擎的這些特性,它適合于以下場景:

不需要事務(wù)支持的場景讀多或者寫多的單一業(yè)務(wù)場景,讀寫頻繁的則不合適讀寫并發(fā)訪問較低的業(yè)務(wù)數(shù)據(jù)修改相對較少的業(yè)務(wù)以讀為主的業(yè)務(wù)對數(shù)據(jù)的一致性要求不是很高的業(yè)務(wù)服務(wù)器硬件資源相對比較差的環(huán)境

3)Memory 存儲引擎

Memeory 存儲引擎將表中的數(shù)據(jù)存儲在內(nèi)存中,而不是磁盤上,也就是說如果重啟MySQL 或者關(guān)閉,此時的數(shù)據(jù)將會丟失。

create table test2 (id int,name varchar(20)) engine = memory;

show create table test2;

insert into test2 values (1,'zhangsan');

select * from test2;

# 重啟MySQL

systemctl restart mysqld

select * from test2;

輸出信息

Empty set (0.00 sec)

Memory 存儲引擎具有以下特點:

高速讀寫:由于數(shù)據(jù)存儲在內(nèi)存中,Memory 存儲引擎提供非??焖俚淖x取和寫入性能。相比于其他存儲引擎,它可以更快地執(zhí)行查詢和寫入操作。臨時數(shù)據(jù)和緩存表:由于數(shù)據(jù)存儲在內(nèi)存中,Memory 存儲引擎對于處理臨時數(shù)據(jù)和緩存表非常有效。如果你需要在查詢過程中創(chuàng)建一些臨時數(shù)據(jù),并且它們在查詢結(jié)束后不再需要,那么 Memory 引擎是一個不錯的選擇。高速緩存索引:Memory 存儲引擎對索引查詢非??焖?,因為索引數(shù)據(jù)完全存儲在內(nèi)存中,減少了磁盤I/O的開銷。不持久化:Memory 引擎的數(shù)據(jù)不會持久化到磁盤上,一旦 MySQL 服務(wù)器重啟或關(guān)閉,存儲在 Memory 引擎中的數(shù)據(jù)就會丟失。因此,Memory 存儲引擎適合于處理非持久化的數(shù)據(jù),并且可以在服務(wù)器重新啟動后重新加載數(shù)據(jù)。適用于小規(guī)模數(shù)據(jù):由于數(shù)據(jù)存儲在內(nèi)存中,Memory 存儲引擎的容量受限于可用的內(nèi)存大小。它不適合用于處理大規(guī)模數(shù)據(jù)集,因為內(nèi)存可能會成為限制因素。不支持事務(wù)和崩潰恢復(fù):Memory 存儲引擎不支持事務(wù),也不支持崩潰恢復(fù)。因此,在使用 Memory 存儲引擎時需要注意數(shù)據(jù)的一致性和持久性。

柚子快報激活碼778899分享:adb MySQL的體系架構(gòu)

http://yzkb.51969.com/

精彩文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18001882.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄