SQL語句的執行過程

2022-08-04 11:30:13 字數 1157 閱讀 1560

1、sql的執行過程

客戶端發起請求-》oracle(server process)接收-》放入到sga中share pool存放-》通過cpu解析相應的執行計畫-》執行計畫存放在share pool中-》在從buffer cache中把相應的資料取出來,如不存在,從資料檔案中把資料調入到buffer cache中取出來

中間的過程程序都是server process完成,包括sql解析、執行、讀取資料、把返回給使用者、修改資料等。是跟使用者互動的程序

2、詳細講解select取資料硬解析

客戶端發起請求-》進去oracle(server process)-》放入到sga中share pool中的library cache,檢查sql語句[微軟使用者1]

,尋找相應的解析計畫[微軟使用者2]

-》解析計畫在librarycache不存在-》通過cpu去解析,消耗cpu、io資源; 需要大量的資源比較出來那一套執行計畫為最優存放到library cache中。

命中率=邏輯讀/(邏輯讀+物理讀);命中率低,效能一定有問題,命中率高,不能確定效能是否存在問題

linux 檢視物理讀

vmstat 1 10

iostat 1 10

blk_read/s:每秒物理讀的塊數

tps:每秒的傳輸資料,資料越大,說明物理讀越多

blk_read:讀的總數

3、詳細解讀insert過程

客戶端發起請求-》進去oracle(server process)-》放入到sga中share pool中的library cache,從資料檔案中把資料取到buffer cache後,修改buffer cache的內容,相應修改的內容寫入到redo log buffer。通過lgwt程序寫入到redo log,buffer cache中的內容通過dbwn程序寫入到資料檔案中,並且更新控制檔案和資料檔案的頭,通過ckpt程序。

[微軟使用者1]

語法是否沒有問題

物件(表、檢視、同義詞)是否存在

許可權是否存在,都需要通過資料字典查詢,資料字典存在row cache中

[微軟使用者2]

把相應的sql語句沒有字母都轉化為asci碼,在hash演算法加密後,找到資料的chain鏈中,在把這個chain遍歷,是否存在chunk中相同的值,如相同,之前已經有解析存在,只需要軟解析,不用硬解析。

SQL語句的執行過程

1.語法校驗 如果在sql計畫快取中沒有對應的執行計畫,伺服器首先會對使用者請求的sql語句進行語法效驗,如果有語法錯誤,伺服器會結束查詢操作,並用返回相應的錯誤資訊給呼叫它的應用程式。注意 此時返回的錯誤資訊中,只會包含基本的語法錯誤資訊,例如select 寫成selec等,錯誤資訊中如果包含一列...

SQL語句的執行過程

在資料庫管理工具端輸入一條sql語句並獲得響應結果通常會經過哪些過程,這就得首先了解我們的資料庫結構 1.儲存管理層 包括儲存管理 日誌管理 併發控制 事務管理 緩衝區管理和封鎖管理等 2.sql處理層 包括sql語法解析 重寫 優化 執行 執行計畫快取與結果集快取 3.介面層 比如常用的jdbc ...

SQL語句執行過程詳解

當希望mysql能夠以更高的效能執行查詢時,最好的辦法就是弄清楚mysql是如何優化和執行查詢的。一旦理解了這一點,很多查詢優化工作實際上就是遵循一些原則能夠按照預想的合理的方式執行 如下圖所示,當向mysql傳送乙個請求的時候,mysql到底做了什麼 1.客戶端傳送一條查詢給伺服器。2.伺服器先檢...