A. 如何優化ms server 2008 r2 的內存釋放
sql Server 2008 或者R2的默認內存分配是2147483647MB, 差不多算是無窮大,對於系統內存的管理策略是有多少佔多少。SQLserver會把所有處理過的SQL操作緩存在內存里,這樣就不用總去讀硬碟了。但是如果長時間運行SQL Server, 系統內存被用的差不多,再開啟其他程序就有可能會報內存不足。這時候就需要釋放內存緩存啦。一般我用以下兩種辦法:
很簡單,打開SQL Server configuration Manager,然後把SQL Server(MSSQLSERVER)重啟一下,一般默認的instance 就是MSSQLServer,當然你如果裝了其他的instance(實例)就選擇相應的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。
這種方法最簡單有效,但是只能臨時的清除SQLServer緩存所佔的內存空間,時間長了SQLServer還會把內存占滿。而且很重要的是這種方法不能在SQLserver有連接的情況下使用,那樣會讓正在使用SQLServer的用戶暫時無法連接SQLServer,甚至導致程序處錯誤。而你作為管理員就……
第二種方法比較復雜,我也不是SQLServer高手,只是從網上學習得來的一些query:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
以上一段一般能釋放緩存,(注意引號有的時候因為word文檔里打不出英文的引號,最好拷到記事本里編輯一下)但是有的時候不是很管用。因為SQLserver不會因為Cache(緩存)釋放了而釋放內存,佔了茅坑不一定XX。此命令只會讓SQLServer不會繼續佔領新的內存,定期執行一下還可以。關鍵是還要釋放一下內存。
通過以下Query 可以看出當前伺服器所佔內存情況
SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')
Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目標和當前SQL Server所佔的內存大小。
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'max server memory', 256
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC sp_configure 'max server memory', 2147483647
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0
GO
其實我用這幾句也不是很奏效,時間一長還是可能會有內存不夠的情況。
******
總的來說我的管理辦法是:
裝好了SQLServer之後立刻設置最大使用內存
EXEC sp_configure 'show advanced options', 1 -- 這句是打開advanced options
GO
EXEC sp_configure 'max server memory', 9216 -- 設置最大內存為9G,我們server 內存是16G的,留下7G足夠了
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0 --記得用完了把advanced options關掉
GO
過一段時間覺得不行了就執行一下
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
這個清緩存也很頭疼,不知道什麼時候合適,就這樣吧,管他呢,我又不是專家,出了問題大不了來機器不行。或者寫個Procere,用job定期執行。
沒辦法,SQLServer太霸道了,以上方法不是萬全之策,建議還是把SQLServer放到一邊單獨用吧。
B. sqlserver 中一些常看的指標和清除緩存的方法
如何查看磁碟I/O操作信息
SET
STATISTICS
IO
ON
命令是一個
使
SQL
Server
顯示有關由
Transact-SQL
語句生成的磁碟活動量的信息。
我們在分析索引性能的時候,會非常有用。
啟用了這個屬性後,我們在執行
SQL
語句後,會收到類似如下的信息,這有利於我們分析SQL的性能:
(3999
row(s)
affected)
表
'ChargeCL'。掃描計數
1,邏輯讀取
9547
次,物理讀取
0
次,預讀
0
次,lob
邏輯讀取
0
次,lob
物理讀取
0
次,lob
預讀
0
次。
其中的
lob
邏輯讀取、lob
物理讀取、lob
預讀
這三個指標是
讀取
text、ntext、image
或大值類型
(varchar(max)、nvarchar(max)、varbinary(max))
時的指標。
而
邏輯讀取、物理讀取、預讀
是對普通數據頁的讀取。
使用
SQL
Server
Management
Studio
Standard
Reports
我們在
SQL
Server
Management
Studio
中,選擇資料庫伺服器,或者具體資料庫,或者Security
--
Logins
時,或者Management
時,Notification
Services
或者
SQL
Server
Agent
對象時候,都會看到SQL
Server
替我們提供的一些現成報表,這些報表的數據,有利於我們分析資料庫的狀態。
比如在
SQL
Server
索引基礎知識(1)---
記錄數據的基本格式
http://blog.joycode.com/ghj/archive/2008/01/02/113290.aspx
中,我們就使用數據表佔用空間的報表
具體報表可以參考以下鏈接:
SQL
Server
Management
Studio
Standard
Reports
-
Overview
http://blogs.msdn.com/buckwoody/archive/2007/10/09/sql-server-management-studio-standard-reports-overview.aspx
測試中,釋放緩存的一些方法
尤其查詢語句性能測試時,數據是否被緩存,這是測試中一個重要點。下面幾個命令幫助我們清除緩存。方便測試。
清除緩存有關的命令:
SQL
2000裡面除了dbcc
unpintable好像就沒有了
而且這個操作也不會立即釋放表內存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所佔用的內存空間做處理
如:
CHECKPOINT
將當前資料庫的全部臟頁寫入磁碟。「臟頁」是已輸入緩存區高速緩存且已修改但尚未寫入磁碟的數據頁。CHECKPOINT
可創建一個檢查點,在該點保證全部臟頁都已寫入磁碟,從而在以後的恢復過程中節省時間。
DBCC
DROPCLEANBUFFERS
從緩沖池中刪除所有清除緩沖區。
DBCC
FREEPROCCACHE
從過程緩存中刪除所有元素。
DBCC
FREESYSTEMCACHE
從所有緩存中釋放所有未使用的緩存條目。SQL
Server
2005
資料庫引擎會事先在後台清理未使用的緩存條目,以使內存可用於當前條目。但是,可以使用此命令從所有緩存中手動刪除未使用的條目。
另外還可以
sp_cursor_list
查看全部游標
DBCC
OPENTRAN查看資料庫打開事務狀態等
C. 怎樣徹底刪除掉sqlserver
卸載SQL Server 2008 R2
1。首先在控制面板里卸載sqlserver和相關的依賴項。
8。如果不能正常安裝SQL Server的話,請盡量重新安裝系統。這是代價最小的方法。
D. SQL Server佔用內存過高,什麼原因導致的,用什麼方法可以解決
SQL Server運行越久,佔用內存會越來越大。因為sql server本身內存回收機製做的不好,這是微軟系列的伺服器&資料庫問題的通病。
解決SQL Server佔用內存過高的方法:
1.定期重啟SQL Server 2008 R2資料庫服務即可。
拓展資料
SQL Server 是Microsoft 公司推出的關系型資料庫管理系統。具有使用方便可伸縮性好與相關軟體集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2012 的大型多處理器的伺服器等多種平台使用。
Microsoft SQL Server 是一個全面的資料庫平台,使用集成的商業智能 (BI)工具提供了企業級的數據管理。Microsoft SQL Server 資料庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使您可以構建和管理用於業務的高可用和高性能的數據應用程序。
網路Microsoft SQL Server
E. sql server 怎麼徹底刪除
1、首先打開開始菜單欄,點擊「控制面板」。
F. sql server 在佔用伺服器內存居高不下怎麼辦
SQL Server對伺服器內存的使用策略是用多少內存就佔用多少內存,只用在伺服器內存不足時,才會釋放一點佔用的內存,所以SQL Server 伺服器內存往往會佔用很高。
清除SQL Server伺服器內存的方法:
1、清除所有緩存
DBCC DROPCLEANBUFFERS
2、調整可使用物理內存
把最大伺服器內存改成1G,確定後內存就會被強制釋放,然後把最大伺服器內存改成合適的值。
G. 怎麼清楚sql sever中的記錄
--1. 將當前資料庫的全部臟頁寫入磁碟。「臟頁」是已輸入緩存區高速緩存且已修改但尚未寫入磁碟的數據頁。
-- CHECKPOINT 可創建一個檢查點,在該點保證全部臟頁都已寫入磁碟,從而在以後的恢復過程中節省時間。
CHECKPOINT
--2. 若要從緩沖池中刪除清除緩沖區,請首先使用 CHECKPOINT 生成一個冷緩存。這可以強制將當前資料庫的全部臟頁寫入磁碟,然後清除緩沖區。
-- 完成此操作後,便可發出 DBCC DROPCLEANBUFFERS 命令來從緩沖池中刪除所有緩沖區。
DBCC DROPCLEANBUFFERS
--3. 釋放過程緩存將導致系統重新編譯某些語句(例如,即席 SQL 語句),而不重用緩存中的語句。
DBCC FREEPROCCACHE
--4. 從所有緩存中釋放所有未使用的緩存條目。SQL Server 2005 Database Engine 會事先在後台清理未使用的緩存條目,以使內存可用於當前條目。
-- 但是,可以使用此命令從所有緩存中手動刪除未使用的條目。
DBCC FREESYSTEMCACHE ( 'ALL' )
--5. 要接著執行你的查詢,不然SQLServer會時刻的自動往緩存里讀入最有可能需要的數據頁.
H. 如何徹底刪掉sqlserver
東西很難卸干凈,一般說法,要麼不裝,要麼裝上就別卸了。
如果實在要卸,不如重裝系統來得干凈。
如果你實在不想重裝,要試著卸載,去控制面版中,找到程序和功能,去那裡面找到與SQL相關的一個一個卸,卸完後,後工清理以下注冊表及文件位置:
在卸載SQL Server開始——運行:輸入regedit 進入注冊表編輯器,進入之後執行下列操作:
1.徹底刪除SQL Server:
hkey_local_machine\software\Microsoft\MSSQLServer hkey_local_machine\software\Microsoft\Microsoft SQL Server hkey_current_user\software\Microsoft\Microsoft SQL Server hkey_current_user\software\Microsoft\MSSQLServer hkey_local_machine\system\currentcontrolset\control\sessionmanager\pendingfileren ameoperations
2。注冊表中的相關信息刪除:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSDTC。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations項目,並刪除它。這樣就可以清除安裝暫掛項目
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\setup
刪除ExceptionComponents
3、運行注冊表,刪除如下項:
HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
將SQL SERVER安裝路徑下,如:C盤——Program File下的Microsoft SQL Server 文件夾刪除重啟計算機SQL SERVER 2008 真的好煩~不容易卸干凈的~下面的方法提供給那些懶得重裝系統的「懶人」~ 親測~1.停掉SQL SERVER 2008所有相關服務
2.在控制面板「添加刪除程序」中,刪除SQL SERVER 2008相關的程序
4.清除注冊表
將HKEY_CURRENT_USER---Software----Microsoft下的Microsoft SQL Server文件夾全部刪除
將HKEY_LOCAL_mACHINE---SOFTWARE---Microsoft下的Microsoft SQL Native Client ,Microsoft SQL Server, Microsoft SQL Server 2008 Redist全部刪除
5.刪除殘留文件
6.將SQL SERVER安裝路徑下,如:C盤——Program File下的Microsoft SQL Server 文件夾刪除
7.重啟計算機 (這世界清凈了)
I. 如何清除sqlserver tempdb數據
收縮 Tempdb 的方法
此方法要求您重新啟動 SQL Server。
1. 停止 SQL Server。打開命令提示符,然後鍵入以下命令啟動 SQL Server:
sqlservr -c -f
-c 和 -f 參數使 SQL Server 以最小配置模式啟動,讓數據文件的 tempdb 大小為 1 MB,日誌文件的 tempdb 為 0.5 MB。
注意:如果使用 SQL Server 命名實例,必須切換到適當的文件夾 (Program Files/Microsoft SQL Server/MSSQL$instance name/Binn),並使用 -s 開關 (-s%instance_name%)。
2. 用查詢分析器連接到 SQL Server,然後運行下列 Transact-SQL 命令: ALTER DATABASE tempdb MODIFY FILE
(NAME = 'tempdev', SIZE = target_size_in_MB)
--Desired target size for the data file
ALTER DATABASE tempdb MODIFY FILE
(NAME = 'templog', SIZE = target_size_in_MB)
--Desired target size for the log file
3. 通過在命令提示符窗口中按 Ctrl-C 停止 SQL Server,將 SQL Server 作為服務重新啟動,然後驗證 Tempdb.mdf 和 Templog.ldf 文件的大小。
此方法的局限是它只能對默認的 tempdb 邏輯文件 tempdev 和 templog 進行操作。如果將其他文件添加到了 tempdb,您可以在將 SQL Server 作為服務重新啟動後收縮它們。在啟動過程中將重新創建所有 tempdb 文件;因此,它們是空的並可刪除。要刪除 tempdb 中的其他文件,請使用帶有 REMOVE FILE 選項的 ALTER DATABASE 命令。
J. 如何釋放Sqlserver所佔用的內存
sql server 在查詢大數據量的數據時,總會佔用大量的內存,並且居高不下,一不小心就會死機。
下面這個是我從網上找到的:
當你查詢數據的數據量比較大時,sqlserver會把查詢結果緩存在內存中,保證你下次查詢同樣的記錄時會很快得到結果,所以內存使用量會激增。
在你完成此次查詢後,sqlserver不會馬上釋放內存,數據會仍然放在內存中,這是sqlserver的優化策略,sqlserver會不斷地佔用你的系統內存,來加快sqlserver的運行速度,當你的系統中的其它服務也需要內存時,它才會自動釋放部分內存。一句話,sqlserver不會讓你的系統有閑置的內存,除非你設置sqlserver的最大內存使用量。這樣也沒什麼不好,如果你的系統很大,單獨給sqlserver一台機器,這樣會提高它的性能。
如果你只是開發用,要想讓sqlserver釋放內存,重啟sqlserver的服務就行了。如果不想讓sqlserver佔用太多內存,設置sqlserver的最大內存佔用量.
設置最大內存後效果好了不少!