網上找了寫資料:
資料庫連線池:資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。
執行緒池
sql server 維護乙個作業系統執行緒池,以便執行從客戶端送達的成批 sql 語句。在 microsoft windows nt? 上,如果伺服器的 lightweight pooling 配置選項設為 1,則 sql server 不再維護執行緒,轉而維護乙個纖程池;纖程使用比執行緒更少的資源。使用執行緒池或纖程池,可以使 sql server 在同時執行多個 sql 語句時優化處理時間分配。該池中的執行緒或纖程共同作為工作執行緒。
工作執行緒數是由伺服器配置選項 max worker threads 控制的。預設值為 255 而且幾乎不需要更改。
當從客戶端收到一批 transact-sql 語句時,如果現有的工作執行緒空閒,就會分配它來執行這個批處理。如果沒有空閒的現有工作執行緒而且工作執行緒數少於 max worker threads,那麼就會分配乙個新的工作執行緒。如果沒有空閒的工作執行緒而且已經達到 max worker threads,那麼新的批處理就要一直等到現有工作執行緒完成其當前批處理任務而空閒為止。當工作執行緒數達到 max worker threads 時,sql server 顯示如下訊息:工作執行緒限制 255 已經達到。
記憶體池
記憶體池的思想通過這個"池"字表露無疑,應用程式可以通過系統的記憶體分配呼叫預先一次性申請適當大小的記憶體作為乙個記憶體池,之後應用程式自己對記憶體的分配和釋放則可以通過這個記憶體池來完成。只有當記憶體池大小需要動態擴充套件時,才需要再呼叫系統的記憶體分配函式,其他時間對記憶體的一切操作都在應用程式的掌控之中。
池化技術(執行緒池 連線池 記憶體池等)
一 池化技術 簡單點來說,就是提前儲存大量的資源,以備不時之需。對於執行緒,記憶體,oracle的連線物件等等,這些都是資源,程式中當你建立乙個執行緒或者在堆上申請一塊記憶體時,都涉及到很多系統呼叫,也是非常消耗cpu的,如果你的程式需要很多類似的工作執行緒或者需要頻繁的申請釋放小塊記憶體,如果沒有...
執行緒池 資料庫連線池
執行緒池的原理 來看一下執行緒池究竟是怎麼一回事?其實執行緒池的原理很簡單,類似於作業系統中的緩衝區的概念,它的流程如下 先啟動若干數量的執行緒,並讓這些執行緒都處於睡 眠狀態,當客戶端有乙個新請求時,就會喚醒執行緒池中的某乙個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,執行緒又處於...
執行緒池 資料庫連線池
執行緒池原理 先啟動若干數量的執行緒,並讓這些執行緒都處於睡眠狀態,當客戶端有乙個新請求時,就會喚醒執行緒池中的某乙個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,執行緒又處於睡眠狀態。資料庫連線池原理 資料庫連線池的解決方案是在應用程式啟動時建立足夠的資料庫連線,並講這些連線組成乙個...