建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和記怡情娛:《Microsoft Sql server 2008 Internals》讀書筆記第九章Plan Caching and Recompilation(6)

?

上文我們懂得編譯工具和重編譯的原由:Correctness-Based Recompiles,Optimality-based Recompiles。本日我們繼承關注若何從緩存中移除計劃和計劃緩存內部操作。

■從緩存中移除計劃

除了基于架構或統計變更而必要重編譯一個計劃,SQL Server也為那些已經從計劃緩存中移除的批處置懲罰從新編譯計劃。基于內存壓力計劃會從緩存中移除。然而,其他的操作也會引起計劃從緩存中移除。此中的一些操作只移除某個特殊的數據庫,而其他的從全部數據庫實例中移除計劃。

下列操作清除完全的計劃緩存以使隨后提交的所有的批處置懲罰依附新的計劃。留意,只管一些操作僅僅影響一個數據庫,但完備的計劃緩存被清除。

■在SQL和記怡情娛 Server 2008中進級任何數據庫

■運行一個DBCC FREEPROCCACHE或DBCC FREESYSTEMCACHE

■改變下列設置設置設備擺設擺設選項中的任何一個:

1、cross db ownership chaining

2、index create memory

3、costthresholds for parallism

4、max degreee of parallism

5、max text repl size

6、min memory per query

6、min server memory

7、max server memory

8、query governor cost limit

9、query wait

10、remote query

11、user options

下列操作清除所有與某個特定命據庫相關的和記怡情娛計劃:

■運行一個DBCC FLUSHPROCINDB敕令

■Detaching a database

■關閉或打開一個auto-close的數據庫

■應用ALTER databse…………Collate敕令改動一個數據庫的Collation

■應用下列敕令改動數據庫:

1、Alter database…………modify_Name

2、Alter database…………modify Filegroup

3、Alter database…………set online

4、Alter database…………set offline

5、Alter database…………set emergency

6、Alter database…………set read_only

7、Alter database…………set read_write

8和記怡情娛、Alter database…………collate

■ Droping a database

從緩存創建一個計劃有兩種要領:一、創建一個計劃領導,以準確匹配針對緩存計劃的SQL文本。與文本有關的所有計劃將會自動移除。SQL Server2008供給了一種簡略單純的要領從計劃緩存創建一個計劃領導。后面會有具體先容。二、在SQL Server 2008中應用DBCC FREEPROCCACHE,語法如下:

DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]

更具體的用法,請查看MSDN:http://msdn.microsoft.com/zh-cn/library/ms174283.aspx

該敕令容許你定義三個參數中的一個,以唆使你想從緩存中移走一個或多個計劃。

■plan_Handle

經由過程定義一個plan_Handle,你可以使用緩存里的句柄移除計劃。Plan_Handle用以確認所有當前已經存在的計劃中的惟一性。

■sql_Handle

經由過程定義一個sql_Handle,你可以使用緩存里的句柄移除計劃。假如任何一個緩存鍵值改變,你可以為相同的SQL文本有多個計劃,比如Set選項。演示代碼如下:

USE Northwind2;

GO

DBCC FREEPROCCACHE;

GO

SET ANSI_NULLS ON

GO

SELECT * FROM orders WHERE customerid = 'HANAR';

GO

SELECT * FROM Orders WHERE CustomerID = 'CENTC';

GO

SET ANSI_NULLS OFF

GO

SELECT * FROM orders WHERE customerid = 'HANAR';

GO

SET ANSI_NULLS ON

GO

SELECT execution_count, text, sql_handle, query_plan

FROM sys.dm_exec_query_stats

CROSS APPLY sys.和記怡情娛dm_exec_sql_text和記怡情娛(sql_handle) AS TXT

CROSS APPLY sys.dm_exec_query_plan(plan_handle)AS PLN;

GO

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
河北十一选五走势图下载 六合彩生肖表 河南十一选五开奖结果走势图 棒球比分直播荷兰德国 2011年长线股票推荐 第119期六肖中特 宁夏11选5 网上真人棋牌平台官网 单机三张牌游戏大全 体彩天下快三