SQL Server 2008 基礎

來源:互聯網
上載者:User

標籤:關聯式資料庫   microsoft   應用程式   伺服器   電腦   

SQL Server 2008 基礎

SQL流程

     650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/87/F4/wKioL1fk86eD5RL_AAFeqBqTpX4092.jpg-wh_500x0-wm_3-wmp_4-s_2816278903.jpg" title="1.jpg" alt="wKioL1fk86eD5RL_AAFeqBqTpX4092.jpg-wh_50" />

TDS是一種協議,一系列描述兩個電腦間如何傳輸資料的規則。象別的協議一樣,它定義了傳輸資訊的類型和他們傳輸的順序。總之,協議描述了“線上的位”,即資料如何流動。表格式資料流協議是建立在TCP/IP Net-Library之上的,包含在TCP資料區段內。TDS用1433連接埠進行資料庫通訊。

TDS協議位於TCP的資料區段內,結構如下:

IP

TCP

TDS頭

TDS的DATA段

    8位頭

TDS用戶端使用稱為表格式資料流 (TDS) 的 SQL Server 專用應用程式級協議來發送 SQL 語句。資料包由用於 SQL Server 的 Microsoft OLE DB 提供者、SQL Server ODBC 驅動程式或 DB-Library DLL 產生。TDS 資料包然後被傳遞給 SQL Server 用戶端 Net-Library,用戶端 Net-Library 將 TDS 資料包封裝為網路通訊協定資料包。在伺服器上,伺服器 Net-Library 接收網路通訊協定資料包,且析取 TDS 資料包並將其傳遞給關聯式資料庫伺服器。在將結果返回給用戶端時,這一進程反向執行。

 

表格式資料流端點:一個網路通訊協定一旦串連成功,就會建立一個對應的TDS端點,用於在用戶端與伺服器之間互傳資訊

         對於這一步,效能問題可能會出現在把請求的內容轉換成SQL Server能處理的格式的過程中,如果資料量大,轉換開銷就高,不管是從外部傳入SQL Server還是從SQL Server輸出到外部,都是如此

命令直譯器:在TDS把請求轉換成SQL Server內部可識別的格式後,首先會傳到命令直譯器處,這個組件會檢查傳入的T-SQL文法是否符合規定。如果文法符合要求,就好產生查詢樹傳入查詢最佳化工具中

         命令直譯器同時也會檢查是否已經存在緩衝了的執行計畫,如果存在,就重用;如果不存在,就讓查詢最佳化工具產生執行計畫

查詢最佳化工具:該組件是SQL Server的核心部分,最佳化器的作用是對特定的請求進行一系列的最佳化,使其儘可能高效地對資料進行操作,最終選擇最低開銷的候選計劃產生預估執行計畫,並傳入執行器執行查詢.

查詢執行器:查詢執行器是執行查詢的組件,但是實際上並不是真正執行,而是通過OLEDB協議訪問並使用一系列的指令操作儲存引擎進行查詢的執行操作。儲存引擎才是實際的查詢執行者

資料存取方法:資料存取方法是提供資料和索引的儲存、查詢及修改的代碼集合。它包含了索引操作資料的代碼,但是並不由自己去資料操作資料,而是提交請求到緩衝管理器

緩衝區管理器:緩衝管理器是管理BufferPool的組件。Buffer Pool是SQL Server記憶體的主要部分,它管理記憶體中的資料,並把適當的資料作為輸出傳輸給(資料存取方法)。如果所需資料不在於記憶體中,緩衝管理器需要從磁碟讀取對應的資料頁到記憶體的資料緩衝,然後把所需的資料返回給資料存取方法。在這個過程中可能會出現一種等待狀態PageIOLatch

資料緩衝:資料緩衝是BufferPool中的最大部分,也可以說是SQL Server中佔用記憶體最多的部分。它用於存放從磁碟載入到記憶體中的資料,以便後續操作使用

         對於當前資料緩衝中每個資料庫的緩衝大小情況。可以使用一個DMV來查詢

         ——sys.dm_os_buffer_descriptors

 

SELECT COUNT(*) * 8 / 1024 AS ‘Cached Size(MB)‘ ,

CASE database_id

WHEN 32767 THEN ‘ResourceDb‘

ELSE DB_NAME(database_id)

END AS ‘Database‘

FROM sys.dm_os_buffer_descriptors

GROUP BY DB_NAME(database_id) , database_id

ORDER BY ‘Cached Size (MB)‘ DESC

 

交易管理員

交易管理員主要包含兩部分:鎖管理器和日誌管理器

1、  鎖管理器通過使用鎖機制來保證資料的並發性和隔離性。

2、日誌管理器通過預寫入日誌機制,保證事務的ACID特性當需要修改資料時,資料存取方法會先到交易管理員中通過對交易記錄進行操作,把請求傳到Buffer管理器中完成,然後返回給資料存取方法並通過交易管理員寫入記錄檔中

 

資料庫事務

事務是對資料庫操作的工作單元,這個單元可以是一個select語句,也可以是包含多個select、update、dalete、insert等操作的命令集合。這個集合被認為是工作單元,SQL SERVER的很多特性都是基於這個工作單元,也就是事務

關聯式資料庫包含4大核心事務特性:原子性、一致性、隔離性和持久性,簡稱ACID特性

 

1、原子性

         原子性意味著一個事務內的所有操作必須全部完成或者全部復原。典型的例子是在ATM機上操作時,要麼取錢、存錢或者轉賬成功,要麼等於從來都沒有做過任何操作。如果轉賬成功但是對方未收到款項,勢必造成很大問題

2、一致性

         一致性要求整個事務在啟動並執行前後資料庫的狀態是一致的,比如庫存不能為負值、性別欄位的值要麼為“男”要麼為“女”等。為了確保事務的一致性,事務不能打破資料定義中的一致性約束

3、隔離性

         隔離性保證在同一時間中,一個事務的運行不能被另外一個事務所影響。但是SQL Server實際是允許這個操作的

4、持久性

         持久性意味著事務一旦成功提交,將永久儲存到伺服器的檔案系統中,即使系統在中途崩潰,所發生的效果都不會丟失,這個會通過日誌來保證

 

         提交事務意味著永久把事務的影響記錄到資料庫中,復原意味著把發生的所有操作去除,等於沒有做過,不過日誌其實還是會記錄這個操作

650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/87/F8/wKiom1fk89HQ2pKDAAEBZ9_jAbI627.jpg-wh_500x0-wm_3-wmp_4-s_2601675609.jpg" title="2.jpg" alt="wKiom1fk89HQ2pKDAAEBZ9_jAbI627.jpg-wh_50" />

關聯式引擎和儲存引擎是SQLServer的兩大組件

         1、關聯式引擎,也叫查詢處理器,因為它的主要作用是最佳化和執行查詢。關聯式引擎中包含的命令解析器用於檢查文法和轉換查詢樹,而查詢最佳化工具則用於最佳化查詢,還有一個查詢執行器負責執行查詢

    2、儲存引擎,負責管理所要資料及涉及的I/O,其中包含的資料存取方法用於處理對行、索引、也、行版本、空間分配等的I/O請求,緩衝區管理器用於管理SQL Server的主要記憶體消耗組件——Buffer Pool,交易管理員將通過所管理資料及維護事務的ACID屬性

緩衝池:在資料庫效能及管理領域中屬於相當重要的一個組件,也是SQL Server中記憶體消耗最大的組件。緩衝池包含了SQL Server的所有緩衝,如計畫快取和資料緩衝等

 

下面是邏輯CPU 格式在不同位元的作業系統中

能支援的最大工作者線程數。

1)對於32 位作業系統:

總可用邏輯CPU<=4 時,最大工作者線程=256。

總可用邏輯CPU>4 時,最大工作者線程=256+((邏輯CPU-4)×8)。

2)對於64 位作業系統:

總可用邏輯CPU<=4 時,最大工作者線程=512。

總可用邏輯CPU>4 時,最大工作者線程=512+((邏輯CPU-4)×16)。

還有一個比較簡單的方法可用於檢查當前系統的最大線程數。比如執行下面的指令碼:

SELECT max_workers_count

FROMsys.dm_os_sys_info

 

通常出現threadpool 類型的等待意味著當前有大量並存執行計劃,或者遇到了CPU 瓶

頸,但是不管是什麼情況,都需要經常檢查這部分的資料,以確保有足夠的線程可用對

於每個背景工作執行緒,在64 位系統中都要消耗2MB 的記憶體,在32 位系統需要消耗0.5MB 的

記憶體,所以SQL Server 只會在需要的時候才建立背景工作執行緒。這部分的資訊可以通過sys.

dm_os_workers 這個DMV 來查看。

SELECT COUNT(*)

FROMsys.dm_os_workers

 

SQL Server NUMA CPU 配置

 

SELECT scheduler_id ,

cpu_id ,

parent_node_id ,

status

FROM sys.dm_os_schedulers

 

當前已緩衝的計劃數及所佔的MB 數

 

SELECT COUNT(*) AS ‘Number of Plans‘ ,

SUM(CAST(size_in_bytes AS BIGINT)) / 1024 /1024 AS ‘Plan Cache Size (MB)‘

FROM sys.dm_exec_cached_plans

 

查看緩衝對象的對應記憶體數

 

SELECT objtype AS ‘Cached Object Type‘ ,

COUNT(*) AS ‘Number of Plans‘ ,

SUM(CAST(size_in_bytes AS BIGINT)) / 1024 /1024 AS ‘Plan Cache Size (MB)‘ ,

AVG(usecounts) AS ‘Avg Use Count‘

FROM sys.dm_exec_cached_plans

GROUP BY objtype

 

 

查詢資料庫路徑

 

USE master  

go  

SELECT physical_name  

FROM   sys.master_files  

WHERE  database_id = DB_ID(‘RJBDB‘)

 

檢查認證

select name, start_date, expiry_date

from sys.certificates

where name not like ‘##%‘

 

查看鏡像端點

SELECT * FROM sys.endpoints e

 

查詢鏡像狀態

 

select *

from sys.database_mirroring

where database_id=DB_ID(‘RJBDB‘)


本文出自 “電腦網路技術” 部落格,轉載請與作者聯絡!

SQL Server 2008 基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.