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

首頁綜合 正文
目錄

柚子快報激活碼778899分享:adb MySQL的體系架構

柚子快報激活碼778899分享:adb MySQL的體系架構

http://yzkb.51969.com/

文章目錄

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

前言

在學習一種事務之前,我們需要先了解事物的基本組成結構,清楚了事物的基本組成結構之后,我們才能更深入的了解相關操作,那么今天我將為大家介紹MySQL的體系架構。

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

MySQL的Server層

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

MySQL 向外提供的交互接口(Connectors)連接池組件(Connection Pool)管理服務組件和工具組件(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 語句來查看已經建立的連接。 如果客戶端一段時間內沒有活躍行為,那么連接器在默認的8個小時后會主動斷開連接。加果在連接被斷開之后,客戶端再次發(fā)送請求的話,就會收到一個錯誤提醒:Lost connection to MySQL server during query。

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

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

2)連接池組件(Connection Pool)

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

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

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

4)SQL接口組件(SQL Interface)

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

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

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

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

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

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

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

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

show variables like '% query_cache% ';

MySQL的存儲引擎

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

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

create table test (id int);

show create table test;

1)InnoDB 存儲引擎

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

它具有以下特性:

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

2)MyISAM 存儲引擎

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

它具有以下特性:

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

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

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

create table test1 (id int) engine = myisam;

show create table test1;

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

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

3)Memory 存儲引擎

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

柚子快報激活碼778899分享:adb MySQL的體系架構

http://yzkb.51969.com/

精彩文章

評論可見,查看隱藏內容

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

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

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

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄