我們需要準(zhǔn)備的材料分別是:電腦。
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),運(yùn)城企業(yè)網(wǎng)站建設(shè),運(yùn)城品牌網(wǎng)站建設(shè),網(wǎng)站定制,運(yùn)城網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,運(yùn)城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1、在我的電腦中,搜索訪問sql占用內(nèi)存,在右側(cè)的管理服務(wù)器中選擇重新啟動,重啟一下IIS。
2、查看一下,sql服務(wù)仍然占用大量的內(nèi)存,內(nèi)存占用基本沒有改變。
3、然后重啟sql服務(wù)。
4、然后再重啟一下sql代理。
5、最后再看一下任務(wù)管理器,就會發(fā)現(xiàn)內(nèi)存占用量降低了。
SQL Server對服務(wù)器內(nèi)存的使用策略是用多少內(nèi)存就占用多少內(nèi)存,只用在服務(wù)器內(nèi)存不足時(shí),才會釋放一點(diǎn)占用的內(nèi)存,所以SQL Server 服務(wù)器內(nèi)存往往會占用很高。
Sql Server運(yùn)行時(shí)候的緩存:
1.數(shù)據(jù)緩存:執(zhí)行個(gè)查詢語句,Sql Server會將相關(guān)的數(shù)據(jù)頁(Sql Server操作的數(shù)據(jù)都是以頁為單位的)加載到內(nèi)存中來, 下一次如果再次請求此頁的數(shù)據(jù)的時(shí)候,就無需讀取磁盤了,大大提高了速度。
2.執(zhí)行命令緩存:在執(zhí)行存儲過程,自定函數(shù)時(shí),Sql Server需要先二進(jìn)制編譯再運(yùn)行,編譯后的結(jié)果也會緩存起來, 再次調(diào)用時(shí)就無需再次編譯。
清除緩存的命令(直接執(zhí)行第四個(gè)命令清除所有緩存):
DBCC FREEPROCCACHE --清除存儲過程相關(guān)的緩存
DBCC FREESESSIONCACHE --會話緩存
DBCC FREESYSTEMCACHE('All') --系統(tǒng)緩存
DBCC DROPCLEANBUFFERS --所有緩存
注意:清除了緩存,不會釋放SQL Server所占用的內(nèi)存,所以需要通過修改SQL Server內(nèi)存或重啟SQL Server服務(wù)器來釋放內(nèi)存。
修改SQL Server內(nèi)存:
優(yōu)化:使用以下語句查找出什么語句占內(nèi)存最高,針對占內(nèi)存高的語句進(jìn)行優(yōu)化
SELECT SS.SUM_EXECUTION_COUNT,
T.TEXT,
SS.SUM_TOTAL_ELAPSED_TIME AS '總和時(shí)間',
SS.SUM_TOTAL_WORKER_TIME AS '執(zhí)行耗時(shí)',
SS.SUM_TOTAL_LOGICAL_READS AS '總和邏輯讀數(shù)',
SS.SUM_TOTAL_LOGICAL_WRITES AS '總和邏輯寫'
FROM (SELECT S.PLAN_HANDLE,
SUM(S.EXECUTION_COUNT)SUM_EXECUTION_COUNT,
SUM(S.TOTAL_ELAPSED_TIME)SUM_TOTAL_ELAPSED_TIME,
SUM(S.TOTAL_WORKER_TIME)SUM_TOTAL_WORKER_TIME,
SUM(S.TOTAL_LOGICAL_READS)SUM_TOTAL_LOGICAL_READS,
SUM(S.TOTAL_LOGICAL_WRITES)SUM_TOTAL_LOGICAL_WRITES
FROM SYS.DM_EXEC_QUERY_STATS S
GROUP BY S.PLAN_HANDLE
) AS SS
CROSS APPLY SYS.dm_exec_sql_text(SS.PLAN_HANDLE)T
ORDER BY SUM_TOTAL_LOGICAL_READS DESC
轉(zhuǎn)自:
如何查看磁盤I/O操作信息
SET
STATISTICS
IO
ON
命令是一個(gè)
使
SQL
Server
顯示有關(guān)由
Transact-SQL
語句生成的磁盤活動量的信息。
我們在分析索引性能的時(shí)候,會非常有用。
啟用了這個(gè)屬性后,我們在執(zhí)行
SQL
語句后,會收到類似如下的信息,這有利于我們分析SQL的性能:
(3999
row(s)
affected)
表
'ChargeCL'。掃描計(jì)數(shù)
1,邏輯讀取
9547
次,物理讀取
次,預(yù)讀
次,lob
邏輯讀取
次,lob
物理讀取
次,lob
預(yù)讀
次。
其中的
lob
邏輯讀取、lob
物理讀取、lob
預(yù)讀
這三個(gè)指標(biāo)是
讀取
text、ntext、image
或大值類型
(varchar(max)、nvarchar(max)、varbinary(max))
時(shí)的指標(biāo)。
而
邏輯讀取、物理讀取、預(yù)讀
是對普通數(shù)據(jù)頁的讀取。
使用
SQL
Server
Management
Studio
Standard
Reports
我們在
SQL
Server
Management
Studio
中,選擇數(shù)據(jù)庫服務(wù)器,或者具體數(shù)據(jù)庫,或者Security
--
Logins
時(shí),或者M(jìn)anagement
時(shí),Notification
Services
或者
SQL
Server
Agent
對象時(shí)候,都會看到SQL
Server
替我們提供的一些現(xiàn)成報(bào)表,這些報(bào)表的數(shù)據(jù),有利于我們分析數(shù)據(jù)庫的狀態(tài)。
比如在
SQL
Server
索引基礎(chǔ)知識(1)---
記錄數(shù)據(jù)的基本格式
中,我們就使用數(shù)據(jù)表占用空間的報(bào)表
具體報(bào)表可以參考以下鏈接:
SQL
Server
Management
Studio
Standard
Reports
-
Overview
測試中,釋放緩存的一些方法
尤其查詢語句性能測試時(shí),數(shù)據(jù)是否被緩存,這是測試中一個(gè)重要點(diǎn)。下面幾個(gè)命令幫助我們清除緩存。方便測試。
清除緩存有關(guān)的命令:
SQL
2000里面除了dbcc
unpintable好像就沒有了
而且這個(gè)操作也不會立即釋放表內(nèi)存Buffer
(DBCC
UNPINTABLE
does
not
cause
the
table
to
be
immediately
flushed
from
the
data
cache.
It
specifies
that
all
of
the
pages
for
the
table
in
the
buffer
cache
can
be
flushed
if
space
is
needed
to
read
in
a
new
page
from
disk.)
SQL
2005/2008讓DBA能夠更自由的對SQL所占用的內(nèi)存空間做處理
如:
CHECKPOINT
將當(dāng)前數(shù)據(jù)庫的全部臟頁寫入磁盤?!芭K頁”是已輸入緩存區(qū)高速緩存且已修改但尚未寫入磁盤的數(shù)據(jù)頁。CHECKPOINT
可創(chuàng)建一個(gè)檢查點(diǎn),在該點(diǎn)保證全部臟頁都已寫入磁盤,從而在以后的恢復(fù)過程中節(jié)省時(shí)間。
DBCC
DROPCLEANBUFFERS
從緩沖池中刪除所有清除緩沖區(qū)。
DBCC
FREEPROCCACHE
從過程緩存中刪除所有元素。
DBCC
FREESYSTEMCACHE
從所有緩存中釋放所有未使用的緩存條目。SQL
Server
2005
數(shù)據(jù)庫引擎會事先在后臺清理未使用的緩存條目,以使內(nèi)存可用于當(dāng)前條目。但是,可以使用此命令從所有緩存中手動刪除未使用的條目。
另外還可以
sp_cursor_list
查看全部游標(biāo)
DBCC
OPENTRAN查看數(shù)據(jù)庫打開事務(wù)狀態(tài)等