1. 程式人生 > >Sql Server tempdb原理-快取機制解析實踐

Sql Server tempdb原理-快取機制解析實踐

Tempdb就像Sqlserver的臨時倉庫,各式各樣的物件,資料在裡面進行頻繁計算,操作.大量的操作使得tempdb可能面臨很大壓力,tempdb中快取的設計就是為了緩解這些壓力.這次就為大家介紹下tempdb的快取機制.

在介紹快取機制前,先簡單瞭解一下TempDB物件

一般我們把tempdb物件分為兩種型別使用者物件和內部物件.使用者物件指通過顯式T-sql來創造的物件(如臨時表),內部物件指通過隱式T-sql建立的物件(Worktables)

注:在引入版本控制後,也可以此單獨分類(DMV sys.dm_db_file_space_usage中單獨列出)

使用者物件

臨時表

表變數(包含表值函式返回值及表值引數)

臨時儲存過程

使用者自定義物件

使用者線上(Online)建立索引空間

內部物件

Sorts(排序溢位)

Worktables(checkdb,遊標,Merge joins,假離線,並行查詢交換溢位,LOB物件等)

Workfiles(hash join 溢位)

Version store(版本行控制)

檢視物件使用情況

當tempdb資料檔案很大或者有異常時,我們可以檢視相應的使用情況.如何檢視,沄劍的Blog中有詳細指令碼.

Tempdb快取機制

Tempdb中的眾多物件快取機制不盡相同,其中一些操作(如Sort)採用內部的機制,對使用者是不可控的,這裡我們主要介紹常用物件臨時表/表變數(也是經常引發問題)的快取機制.

臨時表快取機制(#t)

只有使用儲存過程,觸發器,Functions才能快取

以plan cache的形式快取一個IAM頁和一個DatePage頁

禁止Create後使用DDL操作

禁止命名約束

可以看出臨時表的快取是以proc執行計劃快取的形式實現的.所以batch,動態sql是無法快取的.值得注意的是既然是執行計劃快取,我們就不能在proc中加WITH RECOMPILE關鍵字.

注意:快取物件時區域性臨時表,不包括全域性臨時表.

我們通過一個簡單的例項來分析下快取實現.

首先我們來看下一般batch的操作(非快取)執行兩次,觀察日誌情況如圖1-1

batch create code

use tempdb
go
checkpoint
go
create table #t
(
id int
)
insert into #t select 1
drop table #t
select Operation,CONTEXT,[Transaction ID],AllocUnitId,AllocUnitName,[Page ID],[Transaction Name],Description from fn_dblog(null,null)

相關推薦

Sql Server tempdb原理-快取機制解析實踐

Tempdb就像Sqlserver的臨時倉庫,各式各樣的物件,資料在裡面進行頻繁計算,操作.大量的操作使得tempdb可能面臨很大壓力,tempdb中快取的設計就是為了緩解這些壓力.這次就為大家介紹下tempdb的快取機制. 在介紹快取機制前,先簡單瞭解一下TempDB物件 一般我們把tempdb物件

SQL SERVER裡的鎖機制

表鎖 1:TABLOCK(表鎖) 保證其他程序只能讀取而不能修改資料。 select * from t_country  with (TABLOCK) 2:TABLOCKX(排它表鎖) 防止其他程序讀取或修改表中的資料。 select * from t_coun

SQL Server 執行計劃快取

概述 瞭解執行計劃對資料庫效能分析很重要,其中涉及到了語句效能分析與儲存,這也是寫這篇文章的目的,在瞭解執行計劃之前先要了解一些基礎知識,所以文章前面會講一些概念,學起來會比較枯燥,但是這些基礎知識非常重要。 基礎概念 SQL Server 有一個用於儲存執行計劃和資料緩衝區的記憶體池。池內分配給執行計

SQL Server內部原理(轉)

在講SQLSERVER內部原理的之前,我覺得非常有必要向大家介紹一下SQLSERVER的歷史。 讓我們站在1999年,看看計算機資料庫業界到底處於什麼狀態。 1999年,Oracle已經於1998年9月釋出了Oracle 8i(可能中文版在1999年才來到中國)。Oracle 8i支援用JAVA

深入解析SQL Server並行執行原理實踐(上)

在成熟領先的企業級資料庫系統中,並行查詢可以說是一大利器,在某些場景下它可以顯著地提升查詢的相應時間,提升使用者體驗。如SQL Server、Oracle等, MySQL目前還未實現,而PostgreSQL在2015實現了並行掃描,相信他們也在朝著更健壯的企業級資料庫邁進。RDBMS中並行執行的實現

SQL Server企業級平臺管理實踐》讀書筆記——SQL Server中關於系統庫Tempdb總結

lis 定義函數 into 不能 get 裏的 where requests tar Tempdb系統數據庫是一個全局資源。可供連接到SQL Server實例的全部用戶使用。 存儲的內容項: 1、用戶對象 用戶對象由用戶顯示創建。這些對象能夠位於用戶會話的作用域

金萬城平臺SQL Server索引的原理深入解析扣892118

主鍵 page 有一個 就是 返回 刪除數據 數據 註意 name 1.1 聚集索引表的數據是存儲在數據頁中(數據頁的PageType標記為1),SqlServer一頁是8k,存滿一頁就開辟下一頁存儲。如果表有聚集索引,那麽一筆一筆物理數據就是按聚集索引字段的大小升/降排序

深入解析 SQL Server 高可用映象實現原理

SQL Server 是 windows 平臺 .NET 架構下標配資料庫解決方案,與 Oracle、MySQL 共同構成了 DB-Engines Ranking 的第一陣營,在國內外企業市場中有著廣泛的應用。Mirroring 是 SQL Server 最常用的高可用解決方

SQL Server 2008數據備份與還原的原理是什麽?

減少 備份類型 目標 大量 t-sql語句 不同 不能 -i 情況 為什麽SqlServer有完整備份、差異備份和事務日誌備份三種備份方式,以及為什麽數據庫又有簡單模式、完整模式和大容量日誌模式這三種恢復模式。本文內容適用於2005以上所有版本的SqlServer數據庫。

SQL Server 執行計劃利用統計信息對數據行的預估原理二(為什麽復合索引列順序會影響到執行計劃對數據行的預估)

pan new statistic 細心 參考 gin 技術分享 重建 target 本文出處:http://www.cnblogs.com/wy123/p/6008477.html   關於統計信息對數據行數做預估,之前寫過對非相關列(單獨或者單獨的索

數據庫原理及應用(SQL Server 2016數據處理)【上海精品視頻課程】

應用 原理 sql 信息無處不在,數據處理無處不用。物質、信息、能源已經成為人類生存和發展的重要保障。數據庫的應用廣度深度及建設規模已經成為衡量一個國家信息化程度的一項重要標誌。數據庫技術是計算機學科的一個重要分支,反映了數據管理的最新技術。數據庫技術與計算機網絡、人工智能一起被稱為計算機三大

數據庫原理與應用 基於SQL Server 2005pdf

數據 數據模型 clear 設計 概念 第7章 漸進 col 理解 下載地址:網盤下載 《數據庫原理與應用 基於SQL Server 2005》介紹數據庫基本原理,並以sql server 2005為平臺介紹數據庫管理系統的應用。全書分為3部分,第l~5章介紹數據庫的一般

SQL Server數據庫表鎖定原理以及如何解除表的鎖定

排它 必須 多用戶 sts gif -a 原則 ons ssi 1. 數據庫表鎖定原理 1.1 目前的C/S,B/S結構都是多用戶訪問數據庫,每個時間點會有成千上萬個user來訪問DB,其中也會同時存取同一份數據,會造成數據的不一致性或者讀臟數據. 1.2 事務的AC

SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍)

row 定性 針對 共享 互斥 drop 問題 停止 共享鎖 SQL SERVER的鎖機制系列: SQL SERVER的鎖機制(一)——概述(鎖的種類與範圍) SQL SERVER的鎖機制(二)——概述(鎖的兼容性與可以鎖定的資源) SQL SERVER的鎖機制(三)

理解SQL Server中索引的概念,原理

contact 不為 post 學習 分享 最小 div 例子 index 轉自:http://www.cnblogs.com/CareySon/archive/2011/12/22/2297568.html 簡介 在SQL Server中,索引是

SQL Server企業級平臺管理實踐》讀書筆記——幾個系統庫的備份與恢復

工具 損壞 不能 數據庫比較 註釋 gen express 其它 ros master數據庫 master作為數據庫的主要數據庫,記錄著SQL Server系統的所有系統級信息,例如登錄用戶、系統配置設置、端點和憑證以及訪問其他數據服務器所需要的信息。master數據庫還

sql server 存儲機制

一個 window tle 測試表 最大 inf windows 文件 單元 1、區段   區段(extent)是用來為表和索引分配空間的基本存儲單元。它由8個連續的64KB數據頁組成。   基於區段(而不是實際使用空間)分配空間的概念的要點:   一旦區段已滿,那麽下一

Windows Server2012R2+SQL Server 2017 Express版本下,每日自動備份數據庫的操作實踐筆記

cmd databases AS 如何 ups 執行 tom ack 近日 近日由於服務器問題,進行了一次數據庫遷移。遷移時發現SQL Server 2017 Express版本是免費的,可以滿足我的需要,就拋棄了原來的那啥版本的SQL Server 2008 r2直接使用

SQL Server如何刪除多余tempDB文件

創建 () In prope 使用 property tempdb com 無法刪除 某時,創建了多個tempDB文件,已經超過了服務器核心數,現象刪除tempDB文件,使其保持與CPU核心數相同。但是在刪除的時候,發現無法刪除,報出錯誤:無法刪除文件“tempdev3”,

T-SQL查詢進階--理解SQL Server中索引的概念,原理以及其他

工具 def microsoft 需要 blog b- eve 實現 中一 簡介 在SQL Server中,索引是一種增強式的存在,這意味著,即使沒有索引,SQL Server仍然可以實現應有的功能。但索引可以在大多數情況下大大提升查詢性能,在OLAP