基於資料列版本設定的隔離等級通過消除讀取操作的鎖來改善讀取並發。Microsoft SQL Server 引入了兩個使用資料列版本設定的交易隔離等級: READ_COMMITTED_SNAPSHOT 資料庫選項為 ON 時,啟用使用資料列版本設定的已提交讀隔離的新實現。ALLOW_SNAPSHOT_ISOLATION 資料庫選項為 ON 時,啟用的新的快照隔離等級。對於大多數應用程式,建議應用使用資料列版本設定的已提交讀隔離,而不要應用快照隔離,原因如下:已提交讀隔離比快照隔離佔用的
當要刪除大表的資料時,一定要小批量的刪除相應行,這樣帶來的好處為:1:一個事物刪除少數行,避免由行鎖轉化為表鎖,從而阻塞業務的正常運行2:事務提交後,記錄檔可以重複使用! 以下有兩種小批量的刪除行的解決方案,測試它們的效能如何: 首先填充測試表:USE AdventureWorksGOSELECT * INTO TransactionHistory_temp FROM Production.TransactionHistory(nolock)SELECT * INTO
有兩個用於設計 DML 觸發程序的選項:執行 INSTEAD OF 觸發器代替通常的觸發操作。還可以對帶有一個或多個基表的視圖定義 INSTEAD OF觸發器,這些觸發器可以擴充視圖可支援的更新類型。在執行 INSERT、UPDATE 或 DELETE 語句操作之後執行 AFTER 觸發器。指定 AFTER 與指定 FOR 相同。AFTER觸發器只能在表上指定。下表對 AFTER 觸發器和 INSTEAD OF 觸發器的功能進行了比較。函數 AFTER 觸發器 INSTEAD OF 觸發器
先來看一幅圖: 最佳化器是根據統計資訊來產生執行計畫的,具體來說是根據物理操作符(physical operator)預估返回的行數來產生執行計畫的,最佳化器預先是不知道真實資料分布情況的,所以統計資訊準確與否直接決定了執行計畫的優劣 先來看過濾條件為一個欄位是如何評估返回的行數?use AdventureWorksgo create index idx_postTime on dbo.DataBaseLog(posttime) with(online=on) select * from
文章目錄 Method #1. (Replication Monitor)Limitation of using Replication MonitorMethod #2. (Thru SQL Server Agent)How to analyze these tracer values?Conclusion SQL Server 2005 has lot of new and improved components, and
來看看多列過濾是如何估計返回的行數use AdventureWorksgo--把毫秒全置為0,便於看到效果update dbo.DatabaseLog set PostTime=cast(CONVERT(varchar,PostTime,120) as datetime)update statistics DatabaseLog with fullscan--建立event索引create index idx_event on dbo.DatabaseLog(Event)
某些完整記錄、大規模索引操作可以產生大型資料負荷,不管是離線執行操作還是聯機執行操作,這些資料負荷都可能導致快速填滿交易記錄。這可能影響效能。通過在索引操作的期間內將資料庫的復原模式設定為大容量記錄模式或簡單模式,可以使這些索引操作的日誌記錄最小。最小日誌記錄比完整記錄更加有效,並可以降低索引操作填滿日誌空間的可能性。索引動作記錄記錄下表列出了索引操作和這些操作的每種資料庫復原模式下可用的日誌記錄的類型。聯機和離線索引操作均支援這些復原模式。索引操作 完整 大容量日誌 簡單 ALTER
使用 OLE DB、開放式資料庫連接 (ODBC)、ActiveX 資料對象 (ADO) 或 DB 庫編寫的應用程式可以使用 Transact-SQL分散式交易,方法是發出 Transact-SQL 陳述式來啟動和停止 Transact-SQL 分散式交易。OLE DB 和 ODBC 還包含在API(API) 層級對管理分散式交易的支援。OLE DB 應用程式和 ODBC 應用程式可以使用這些 API 函數管理組件括其他元件物件模型 (COM)資源管理員(支援 Microsoft
只要提供者支援所需的 OLE DB 介面,則本主題中所提到的每一類 Transact-SQL 陳述式均可以使用。Transact-SQL 陳述式以下列表列出了 Transact-SQL 語言的一些子集,可對通過基於連結的伺服器的名稱或臨時名稱訪問的遠端資料表使用這些子集:所有具有標準格式 SELECT select_list FROM 子句 WHERE 子句的查詢均允許使用。當new_table_name 引用遠端資料表時,不允許使用 SELECT 語句的 INTO