SQL Server 2008數據庫學習筆記
近幾年來,SQL Server 2008數據庫由于其操作簡單、功能強大已經被越來越多的人使用。對于初學者來說,學習SQL Server 2008時會或多或少的存在一些困惑,本文我們總結了一些SQL Server 2008數據庫的一些知識,希望能夠對您有所幫助。
SQL SERVER數據存儲體系結構
SQL SERVER 把數據存儲在磁盤上,但為了提高性能和完整性,它優化了磁盤結構的格式,磁盤上的數據是最近一次由內存刷新到磁盤上的狀態.內存數據是最新的,數據修改一般是先在內存中進行,而不是直接寫入到磁盤.
物理數據結構
一個數據庫至少有一個數據文件與事務日志文件.
數據文件存儲數據庫的所有信息,包括數據值,索引和配置數據和可編程對象.事務日志文件提供一個對數據庫所有修改的持久記錄.SQL Server采用預寫的修改過程,即所有的修改在寫入數據庫之前都必須先寫進事務日志.這些日志使各種數據恢復和完整性功能得以實現。
8k的塊來組織,稱為頁面.8個頁面又被組織為區.
數據頁面:數據頁面存儲所有的數據值,但不包含那些大值類型,如text,ntext,xml,varchar(max).
索引頁面:存儲聚集索引條目和非聚集索引條目.
大型對象頁面:由于SQL Server數據行不能跨越頁面,所以大型數據值必須通過指針放到其他地方,指向存放數據條目的大型數據頁面.Varchar類似的類型會根據大小動態地在數據頁面與大型對象頁面轉換.
其他頁面:GAM SGAM PFS等,存儲頁與區分配使用情況的頁面.
SGAM專門監控混合區,用一位來標識混合區是否還有空閑頁面.
內存體系結構
存儲數據的內存組織結構,也叫數據緩存或緩沖緩存.類似于物理磁盤的組織結構,內存組織成8KB單元大小的緩沖池來存儲數據頁面.
客戶端工作站向SQL Server提交一個查詢,首先解析優化查詢,并編譯成數據引擎可遵循的查詢計劃,嘗試定位到內存緩沖區中的頁,提取必須的數據值,然后以一個表格式數據流(TDS)返回給客戶端,如果不在緩沖區中,則會產生一個I/O請求去磁盤讀取一個頁面到內存中.
內存緩沖區有三種狀態:空閑,可用與臟的.
需要明白的是SQL Server的IO,都是通過WINDOWS來執行的,所有的硬件也是通過windows來管理的,SQL Server通過OS來處理,本身不直接管理.
表分區
1.創建分區函數
- CREATE PARTITION FUNCTION DATEPARTITION(DATETIME)
- AS RANGE RIGHT
- FOR VALUES ('01/01/2007','01/01/2008')
這個示例分了三個區,一個是2007/01/01之前的數據,不包含這一天.然后是2007/01/01到2008/01/01(不包含)之間的數據,然后是2008/01/01及其以后的數據。
2.創建分區方案
- CREATE PARTITION SCHEME dateScheme
- AS PARTITION DATEPARTITION
- TO ([FG1],[FG2],[PRIMARY])
- GO
分區方案末端的文件組表示分區將放置在哪里.
3.創建分區表
- CREATE TABLE partitiontable
- (id INT NOT NULL IDENTITY(1,1),
- datevalue DATETIME NOT NULL)
- ON dateScheme(DATEVALUE)
插入測試數據后并查看
- INSERT INTO partitiontable (datevalue) VALUES('2006-6-6 12:00:00')
- INSERT INTO partitiontable (datevalue) VALUES('2007-6-6 12:00:00')
- INSERT INTO partitiontable (datevalue) VALUES('2008-6-6 12:00:00')
查看:
- SELECT
- partition_id,
- PARTITION_number,
- ROWS
- FROM sys.partitions
- WHERE object_idobject_id=object_id('partitiontable')
面向查詢索引的索引策略
表的存儲HOBT,根據是否有索引來決定。
在堆中查詢數據的基本方式是執行全表掃描,表是基于數據頁存儲的,因此表掃描就是對掃描存儲該表的數據頁,并從中提取所需的數據。這表明堆上進行數據查詢的I/O開銷應該與對應的數據頁數基本相當。
我們應該創建什么樣的索引呢?創建查詢優化器實際會使用的索引,創建能減少I/O的索引。
相對于響應時間,優化器更關注于吞吐量,優化器使用靜態的統計數據,必要時使用手動更新,UPDATE STATISTICS即可刷新需要的統計頁。優化器需要結構良好的查詢。SQL SERVER 對每個表只使用一個索引(有例外)。
關于SQL Server 2008數據庫的知識就介紹到這里了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】