tsql是mysql中的嗎_Mysql中的sql是如何執行的

MySQL中的SQL是如何執行的

MySQL是典型的C/S架構,也就是Client/Server架構,服務器端程序使用的mysqld.整體的MySQL流程如下圖所示:

2c5beddd0c4e224a30e4e7b594487c24.png

MySQL是有三層組成:

連接層: 負責客戶端與服務器端建立連接,客戶端發送SQL至服務端;

SQL層: 對SQL語句進行查詢處理;

存儲引擎層: 與數據庫文件打交道,負責數據的存儲和讀取.

其中,SQL層與數據庫文件的存儲方式無關,我們來看下SQL層的架構:

7d0d93112140c04c095013de65b40d44.png

查詢緩存: Server如果在查詢緩存中發現了這條SQL語句,就會直接將結果返回給客戶端;如果沒有,就進入到解析器階段.格外注意的是,因為查詢緩存往往效率不高,所以在MySQL8.0之后就拋棄了緩存.

解析器: 在解析器中對SQL語句進行語法分析和語義分析.

優化器: 在優化器中會確定SQL語句的執行路徑,比如說是根據全表檢索,還是根據索引來檢索等.

執行器: 在執行前需要判斷用戶是否具備權限,如果具備權限就執行SQL查詢并返回結果.在MySQL8.0以下的版本,如果設置了查詢緩存,這時會將查詢結果進行緩存.

SQL語句在MySQL中的流程是: SQL語句 -> 緩存查詢 -> 解析器 -> 優化器 -> 執行器.

說說存儲引擎,MySQL的存儲引擎采用了插件的方式,每個存儲引擎都面向一種特定的數據庫應用環境.同事MySQL還允許開發人員設置自己的存儲引擎.下面列舉常見的存儲引擎:

InnoDB存儲引擎: 是MySQL5.5.8版本之后默認的存儲引擎,最大的特點是支持事務、行級鎖定、外鍵約束等.

MyISAM存儲引擎: 在MySQL5.5.8版本之前是默認的存儲引擎,不支持事務,也不支持外鍵,最大的特點是速度快,占用資源少.

Memory存儲引擎: 使用系統內存作為存儲介質,以便得到更快的響應速度.不過如果mysqld進程崩潰,則會導致所有的數據丟失,因此只有當數據是臨時數據的情況下才會使用Memory引擎.

NDB存儲引擎: 也叫做NDB Cluster存儲引擎,主要用于MySQL cluster分布式集群環境,類似于Oracle的RAC集群.

Archive存儲引擎: 有很好的壓縮機制,用于文件歸檔,在請求寫入時會進行壓縮,所以經常用來做倉庫.

注意,數據庫的設計在于表的設計,所以MySQL中每個表的設計都可以采用不同的存儲引擎,可以根據實際情況的數據處理需要來選擇存儲引擎,這個是MySQL強大的地方.

數據庫管理系統也是一種軟件

完成的MySQL結構圖如下:

f21db75602c9d80f2b59016cfdd2b3a8.png

profiling的使用,開啟profiling可以讓MySQL收集在SQL執行時所使用的資源情況,命令如下

select @@profiliong;

返回結果如果是0表示關閉,如果是1表示打開.可以使用 set profiling = 1;將profiling打開.

接下來可以執行sql語句,然后使用 show profiles來查詢當前會話產生的所有peofiles.

0f0f93cc13703c3deb56f17d2b0cb7e3.png

前面會有query_id,可以使用show profile;獲取上次查詢執行的時間,或者使用show profile for query id;查詢指定的query id執行的時間.

當然還有oracle的執行過程,這個暫時不研究.

aa058cddebeb22ffee0455802e6eae7a.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541082.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541082.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541082.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件質量特性測試

針對軟件質量特性進行測試,可以避免重大漏測,一般人我不告訴他。《軟件工程—產品質量》(GB/T 16260-2006)中規定對軟件的每個質量特性與子特性都有定義:一、功能性:是指當軟件在指定條件下使用&#xff0c…

PHP array_pop()函數與示例

PHP array_pop()函數 (PHP array_pop() function) array_pop() function is used to delete/pop last element from the array. array_pop()函數用于從數組中刪除/彈出最后一個元素。 Syntax: 句法: array_pop(array);Here, array is the input array, function w…

網站關停就沒事了?5100萬賬戶文件被盜

曾經是美國三大音樂視頻文件共享軟件之一的imesh,意外倒閉。而更意外的是,就在近日,imesh這款已經倒閉的軟件,5100萬賬戶開始在暗網被黑客拍賣。 Imesh這款軟件是美國紐約的老牌音樂視頻分享軟件之一,早在2000年前便已…

數據庫表設計索引外鍵設計_關于索引的設計決策 數據庫管理系統

數據庫表設計索引外鍵設計Introduction: 介紹: The attributes whose values are required inequality or range conditions and those that are keys or that participate in join conditions require access paths. 其值為必需的不等式或范圍條件的屬性以及作為鍵…

接口測試從零開始系列_mock技術使用

1、什么情況下會使用mock技術 (1)需要將當前被測單元和其依賴模塊獨立開來,構造一個獨立的測試環境,不關注被測單元的依賴對象,只關注被測單元的功能邏輯 ----------比如被測代碼中需要依賴第三方接口返回值進行邏輯處…

amie 規則挖掘_AMIE的完整形式是什么?

amie 規則挖掘AMIE:工程師協會的準會員 (AMIE: Associate Member of the Institution of Engineers) AMIE is an abbreviation of Associate Member of the Institution of Engineers. The Institution of Engineers India Limited (IEIL) provides this profession…

java 馬克思_單鏈表-Java

public class SinglyListNode {int val;SinglyListNode next;SinglyListNode() {}SinglyListNode(int x) {this.val x;}}/*執行用時:12 ms, 在所有 Java 提交中擊敗了66.93%的用戶內存消耗:39.5 MB, 在所有 Java 提交中擊敗了5.06%的用戶*/class MyLink…

python的pass語句_Python | 演示pass語句的示例

python的pass語句python中的pass語句 (pass statement in python) "pass" is a type of null operation or null statement, when it executes nothing happens. It is used when you want do not want to write any code/statement to execute but syntactically a …

HDS:聚焦未來的投資“凍結”

一家日本IT網站報道的有關HDS凍結對高端存儲產品的投資一事引發眾議。讓人陷入疑惑的這次聲明就是,HDS認為單純的陣列產品并非企業存儲的未來。 6月1日,IT Pro Nikkei網站發布了一篇報道,內容援引HDS一份表示將凍結高端存儲業務的簡報。這引發…

java js對象轉字符串數組_JS數組轉字符串(3種方法)【轉】

JavaScript 允許數組與字符串之間相互轉換。其中 Array 方法對象定義了 3 個方法,可以把數組轉換為字符串,如表所示。數組方法說明toString()將數組轉換成一個字符串toLocalString()把數組轉換成本地約定的字符串join()將數組元素連接起來以構建一個字符…

中美共建大數據創新研究中心

由貴陽市人民政府、工信部電子一所、美國加州大學伯克利分校合作共建的貴州伯克利大數據創新研究中心日前在貴陽揭牌。 據了解,貴州伯克利大數據創新研究中心將分兩階段建設。第一階段,2016年9月份至2017年底,將重點完成“學齡兒童大數據分析…

Python中的__init__和self是做什么的?

The __init__ and self are two keywords in python, which performs a vital role in the application. __init__和self是python中的兩個關鍵字,在應用程序中起著至關重要的作用。 To begin with, it is important to understand the concept of class and object…

Palo Alto Networks漏洞防護擴展至云端

中國北京,2016年4月12日 –下一代安全企業Palo Alto Networks?(紐交所代碼:PANW)近日宣布進一步增強其下一代安全平臺,擴展漏洞防護能力,以滿足那些依賴云環境和SaaS應用的業務對安全的需求。 企業機構需要變得更加靈活和有競爭力…

java 嵌套調用_Java嵌套類的使用

嵌套類是指被定義在另一個類內部的類,它為外部類提供服務。嵌套類分四種:靜態成員類、非靜態成員類、匿名類和局部類。一、靜態成員類與非靜態成員類的區別?在什么情況下可以用靜態成員類?我們知道在類的設計中,為了避…

c語言getenv函數_getenv()函數與C ++中的示例

c語言getenv函數C getenv()函數 (C getenv() function) getenv() function is a library function of cstdlib header. It is used to get the environment string. It accepts a parameter which is an environment variable name (platform dependent, it may either case s…

isless()函數與C ++中的示例

C isless()函數 (C isless() function) isless() function is a library function of cmath header, it is used to check whether the given first value is less than the second value. It accepts two values (float, double or long double) and returns 1 if the first …

停牌17個月 漢能薄膜真的要復牌了?

最近,停牌超過一年的漢能薄膜又有新進展。 10月7日,路透社引述知情人士的消息稱,香港證監會或將允許漢能薄膜發電復牌,不過復牌的前提是需漢能將符合一些特定條件。 該消息人士透露,證監會告知漢能,若要恢復…

hive java udf_UDF_Hive教程_田守枝Java技術博客

UDF是User-Defined Functions(用戶定義函數)的簡稱。通過以下命令可以查看HIVE中函數的相關文檔:SHOW FUNCTIONS;DESCRIBE FUNCTION ;DESCRIBE FUNCTION EXTENDED ;1、UDF函數可以直接應用于select語句,對查詢結構做格式化處理后,再輸出內容。…

python 示例_帶有示例的Python列表remove()方法

python 示例列出remove()方法 (List remove() Method) remove() method is used to remove the first occurrence of the given element, the method is called with this list (the list from which we have to remove the element) and accepts the element to be removed as…

車聯網領域,傳統TSP企業做錯了什么 ?

當下,車聯網的定義更加豐富和寬泛,除了傳統意義上的Telematics服務,數字服務、移動出行服務、電商平臺等將被融入到車聯網概念中,與用車相關的維修保養、洗車、代駕等第三方服務,也將成為整車廠整合的重點被納入到車聯…