T-SQL執行內幕(6)——返回結果
本文屬於SQL Server T-SQL執行內幕系列
在執行引擎按照執行計劃的要求把資料成功檢索之後,就需要把資料返回給客戶端。這裡的結果不是單純的資料庫引擎完成查詢資料之後的結果,而是客戶端(如SSMS)接收到資料的結果。一旦資料已經“填滿”執行樹的各個操作符,那麼最頂端的根操作符就會負責把資料寫入網路快取(network buffer)並把這些資料傳送給客戶端。
結果集並不是直接寫到中間儲存(如記憶體或磁碟)然後傳送到客戶端,而是在建立時(查詢執行時)就傳送返回。不過由於受限於網路協議中的流量控制等制約,如果客戶端沒有積極處理結果(如使用
有一個特殊情景,使用了OUTPUT引數,為了返回output的資訊,這個output資訊會寫入到網路資料流中一併返回,但是這個值只會在執行結束後返回,也代表著執行完成。而其他場景是一邊執行一邊傳送。
另外要再次提醒,結果的傳送同樣需要轉換為TDS格式通過網路協議傳送到客戶端。
相關推薦
T-SQL執行內幕(6)——返回結果
本文屬於SQL Server T-SQL執行內幕系列 在執行引擎按照執行計劃的要求把資料成功檢索之後,就需要把資料返回給客戶端。這裡的結果不是單純的資料庫引擎完成查詢資料之後的結果,而是客戶端(如SSMS)接收到資料的結果。一旦資料已經“填滿
T-SQL執行內幕(3)——解析和編譯
本文屬於SQL Server T-SQL執行內幕系列 接上文,當請求被任務接收同時得到工作執行緒指派執行後,就開始在SQL Server內部進行運作。當請求被執行時,第一步就是要先解析(Parsing)請求,把TDS資料流轉換成SQL
T-SQL執行內幕(2)——Tasks、Workers、Threads、Scheduler、Sessions、Connections、Requests
本文屬於SQL Server T-SQL執行內幕系列 接上文:T-SQL執行內幕(1)——簡介 本節以介紹一些基礎的但又容易混淆的概念。包括:Tasks、Workers、Threads
T-SQL執行內幕(1)——簡介
本文屬於SQL Server T-SQL執行內幕系列 前言: 本文主體內容來自於:http://rusanu.com/2013/08/01/understanding-how-sql-server-executes-a-query/但是經常打不
T-SQL執行內幕(7)——記憶體授予
本文屬於SQL Server T-SQL執行內幕系列 前面提到,在執行過程中,很多操作符都需要記憶體來支援運作。比如Sort操作符,需要儲存所有的輸入以便進行排序,而Hash操作,為了建立大型的hash表,也需要申請資源來儲存資料。 &n
T-SQL執行內幕(5)——執行
本文屬於SQL Server T-SQL執行內幕系列 一旦優化器選擇了開銷最低的預估執行計劃之後,就會把預估執行計劃轉換成實際執行樹(Actual Execution Tree)進行查詢執行。樹的每個節點都是一個操作符
T-SQL執行內幕(4)——優化
本文屬於SQL Server T-SQL執行內幕系列 接上文,當解析和編譯完成後,請求的生命週期就進入下一步——優化(Optimisation)。在SQL語言中,優化的本質就是找最好的路線。意思是在多種可能的候選資料訪問方式中選擇最佳一個。比如
T-SQL執行內幕(10)——讀取資料
本文屬於SQL Server T-SQL執行內幕系列 關係型資料庫的資料訪問操作總是從記憶體的快取中讀取資料而不是從磁碟中讀取。這個快取稱為Buffer Pool。如果資料訪問操作符未能在快取中找到所需的資料,那麼就需要從磁碟中載入
T-SQL執行內幕(9)——資料訪問
本文屬於SQL Server T-SQL執行內幕系列 在執行樹的葉子端(通常就是圖形化執行計劃每個分支的最右端),一般是實際訪問資料的操作符。當呼叫這些操作符上的next()方法時,會返回表或者索引上的實際資料。資料訪問通常有三類可能的操作
T-SQL執行內幕(8)——資料儲存
本文屬於SQL Server T-SQL執行內幕系列 前面提到了資料訪問,那麼如何訪問?訪問什麼?為此必須介紹一下資料儲存的概念。SQL Server以三種方式儲存和組織資料:均可從sys.partitions中查到 H
T-SQL執行內幕(11)——Read Ahead
每當操作讀取頁的資料,意味著這些資料需要固定到快取(buffer pool)中。這個時候可能會導致操作被阻塞,因為當所需要的資料不在記憶體時,需要把資料從磁碟載入記憶體,這個時候操作需要等待頁從磁碟搜尋並載入記憶體。如果由於系統負擔很重或者載入的量很大,磁碟I/O響應
java多執行緒(6)
假設這裡有一個系統,大概每秒需要處理5萬條資料,這5萬條資料為一個批次,而這每秒傳送的5萬條資料需要經過兩個處理過程,第一步是資料存入資料庫,第二步是對資料進行其他業務的分析 使用執行緒池的方式的話,可以實現指定執行緒的數量,這樣的話就算再多的資料需要入庫,只需要排隊等待執行緒
優勢執行力(6)—— 不讓別人拖延自己前進的腳步
你想做什麼其實並不重要。 一個優秀的人做什麼都能成功。關鍵是你要選擇自己最喜歡的失業,然後投入所有的精力和熱情去從事它。 成功需要勇氣和主動性。 在很多時候,我們都很清楚自己究竟該做什麼,但就是沒有勇氣去邁出關鍵的一步,因為我們不願意去付出哪怕是極其微小的代價。 無論遭受怎樣的打
java多執行緒(6)---ThreadLocal
ThreadLocal 什麼是ThreadLocal? 顧名思義它是local variable(執行緒區域性變數)。它的功用非常簡單,就是為每一個使用該變數的執行緒都提供一個變數值的副本,是每一個執行緒都可以獨立地改變自己的副本,而不會和其它執行緒的副
精盡MyBatis原始碼分析 - SQL執行過程(一)之 Executor
> 該系列文件是本人在學習 Mybatis 的原始碼過程中總結下來的,可能對讀者不太友好,請結合我的原始碼註釋([Mybatis原始碼分析 GitHub 地址](https://github.com/liu844869663/mybatis-3)、[Mybatis-Spring 原始碼分析 GitHub 地址
精盡MyBatis原始碼分析 - SQL執行過程(二)之 StatementHandler
> 該系列文件是本人在學習 Mybatis 的原始碼過程中總結下來的,可能對讀者不太友好,請結合我的原始碼註釋([Mybatis原始碼分析 GitHub 地址](https://github.com/liu844869663/mybatis-3)、[Mybatis-Spring 原始碼分析 GitHub 地址
精盡MyBatis原始碼分析 - SQL執行過程(三)之 ResultSetHandler
> 該系列文件是本人在學習 Mybatis 的原始碼過程中總結下來的,可能對讀者不太友好,請結合我的原始碼註釋([Mybatis原始碼分析 GitHub 地址](https://github.com/liu844869663/mybatis-3)、[Mybatis-Spring 原始碼分析 GitHub 地址
精盡MyBatis原始碼分析 - SQL執行過程(四)之延遲載入
> 該系列文件是本人在學習 Mybatis 的原始碼過程中總結下來的,可能對讀者不太友好,請結合我的原始碼註釋([Mybatis原始碼分析 GitHub 地址](https://github.com/liu844869663/mybatis-3)、[Mybatis-Spring 原始碼分析 GitHub 地址
圖解HTTP總結(4)——返回結果的HTTP狀態碼
HTTP狀態碼負責表示客戶端HTTP請求的返回結果、標記伺服器端的處理是否正常、通知出現的錯誤等工作。 狀態碼的類別 2XX 成功 200 OK 表示從客戶端發來的請求在伺服器端被正常處理了。
SQL server學習(五)——T-SQL編程之存儲過程
mds ren creat 存儲 創建數據庫 希望 with 接收 bank 周五了,祝大家周末愉快。 之前一直在寫SQL server的分享,今天再來個T-SQL編程中的存儲過程。 存儲過程 存儲過程(procedure)類似於C語言中的函數,用來執行管理任務或應用復雜的