1、打開SQL Sever 2008 R2資料庫
Ⅱ sql資料庫佔用內存太大如何處理
sql server沒有辦法釋放內存,內存都是系統自動管理的
除非你殺調哪些佔用內存大的進程
sql 語句沒寫好,死鎖...都會導致佔用內存很大
select * from master..sysprocesses
kill spid --spid 就是上面查到的spid欄位
Ⅲ SQL伺服器內存怎麼動態分配
SQL伺服器內存有兩種基本管理方法:動態分配和靜態分配
控製程序可使用的內存數量。動態分配允許管理員聲明一塊內存的大小;考慮到它的實際使用,SQL伺服器可以分配給其需要佔用的內存的最大值,並且(理論上)在沒有使用內存的情況下將其釋放。靜態分配則是創建一塊固定的內存空間,提供給SQL Server使用——不再進行分配。
在默認情況下,SQL Server被設置成動態分配,分配給其正在運行的計算機內所有可用的物理內存。許多管理員注意到SQL Server內存隨時間的流逝被逐漸消耗殆盡時,其原因很可能是故障或是內存漏洞,但這個程序正是被設計成這樣的。SQL Server就是要在任何可能的情況下在電腦中運行,並因此為達到其最佳性能而使用所有可用的內存。如果SQL Server在獨立的機器中運行,那麼就讓它分配和釋放其需要的內存吧。
在一個小型商業伺服器機器中,SQL可能與其他程序,如IIS,同時運行,管理員或許嘗試著進行設置,使SQL Server運行在一塊固定大小的內存,目的是控制其不會佔用用於共享的內存。但這並不一定能如願以償。一方面,將內存的最高限度設置得太低,並且沒有分配給SQL伺服器足夠的可用內存來用作類似事務日誌或查詢執行的緩存,所有這些都很難辦到。使SQL伺服器得到執行操作所需內存的惟一方法就是換出其他的頁面,這是個緩慢的過程。
有許多方法可以計算出最好的內存分配。如果你有可預知的用戶負載,依照用戶所需的最大數目分配給他們。微軟推薦至少用4 MB用作動態的最大空間,這已經成為一個可能的規則。如果你的用戶負載變化范圍很大——如以下情況,當你通過IIS 的前端連接到公共的網際網路來支持你的資料庫服務的時候——實時的統計數據將會比僅憑猜測所作的工作幫助更大。在高峰期,把SQL Server的高速緩存命中率和每秒缺頁率等性能數字搜集起來。如果這些數據表明SQL Server正在做大量的交換,那麼增加最大內存空間直到交換逐漸減少。每秒一次或更多次的交換是有壞處的。
另一種選擇是使「為SQL Server預留物理內存」的選項可用,這可以防止SQL Server把已經分配給它的內存換出,即使當其他應用程序能夠使用它時。這可以叫做是一把雙刃劍:它既可以相當大程度的提高性能,也可能帶來更大的性能損害。在有許多RAM 可以共享的(1 GB 或更多)的系統中,這是值得一試的,但是當有其他關鍵的進程可能突然需要大量的內存時,這種辦法是不應該使用的。(並且如果需要的話,SQL Server可能會被迫放棄一些它自己的內存)。如果SQL Server是在獨立的機器上運行,用這種辦法最佳化性能則是值得的。
Ⅳ 如何解決SQL Server資料庫佔用內存的問題 詳細�0�3
經常看見有人問,MSSQL 佔用了太多的內存,而且還不斷的增長;或者說已經
最大的開銷一般是用於數據緩存,如果內存足夠,它會把用過的數據和覺得
你會用到的數據統統扔到內存中,直到內存不足的時候,才把命中率低的數據給
清掉。所以一般我們在看statistics io 的時候,看到的physics read 都是0。
其次就是查詢的開銷,一般地說,hash join 是會帶來比較大的內存開銷的,
而merge join 和nested loop 的開銷比較小,還有排序和中間表、游標也是會
有比較大的開銷的。
所以用於關聯和排序的列上一般需要有索引。
再其次就是對執行計劃、系統數據的存儲,這些都是比較小的。
我們先來看數據緩存對性能的影響,如果系統中沒有其它應用程序來爭奪內
存,數據緩存一般是越多越好,甚至有些時候我們會強行把一些數據pin 在高速
緩存中。但是如果有其它應用程序,雖然在需要的時候MSSQL 會釋放內存,但是
線程切換、IO 等待這些工作也是需要時間的,所以就會造成性能的降低。這樣
我們就必須設置MSSQL 的最大內存使用。可以在SQL Server 屬性(內存選項卡)
中找到配置最大使用內存的地方,或者也可以使用sp_configure 來完成。如果
沒有其它應用程序,那麼就不要限制MSSQL 對內存的使用。
然後來看查詢的開銷,這個開銷顯然是越低越好,因為我們不能從中得到好
處,相反,使用了越多的內存多半意味著查詢速度的降低。所以我們一般要避免
中間表和游標的使用,在經常作關聯和排序的列上建立索引。
Ⅳ sql資料庫伺服器,內存佔用過大怎麼辦
SqlServer系統內存管理在沒有配置內存最大值,很多時候我們會發現運行SqlServer的系統內存往往居高不下。這是由於他對於內存使用的策略是有多少閑置的內存就佔用多少,直到內存使用慮達到系統峰值時(預留內存根據系統默認預留使用為准,至少4M),才會清除一些緩存釋放少量的內存為新的緩存騰出空間。
這些內存一般都是SqlServer運行時候用作緩存的,例如你運行一個select語句,執行個存儲過程,調用函數;
1.數據緩存:執行個查詢語句,SqlServer會將相關的數據頁(SqlServer操作的數據都是以頁為單位的)載入到內存中來,下一次如果再次請求此頁的數據的時候,就無需讀取磁碟了,大大提高了速度。
2.執行命令緩存:在執行存儲過程,自定函數時,SqlServer需要先二進制編譯再運行,編譯後的結果也會緩存起來,再次調用時就無需再次編譯。
在我們執行完相應的查詢語句,或存儲過程,如果我們不在需要這些緩存,我可以將它清除,DBCC管理命令緩存清除如下:
--清除存儲過程緩存
DBCCFREEPROCCACHE
--註:方便記住關鍵字FREEPROCCACHE可以拆解成FREE(割捨,清除)PROC(存儲過程關鍵字簡寫),CACHE(緩存)
--清除會話緩存
DBCCFREESESSIONCACHE
--註:FREE(割捨,清除)SESSION(會話)CACHE(緩存)
--清除系統緩存
DBCCFREESYSTEMCACHE('All')
--註:FREESYSTEMCACHE
--清除所有緩存
DBCCDROPCLEANBUFFERS
--註:DROPCLEANBUFFERS
Ⅵ 如何將SQL查詢結果復制到內存。
可以用Export命令完成對指定查詢結果的導出操作。
基於不同的資料庫,語法格式會稍微不同,請你參照你使用的資料庫的語法格式進行即可。
可以將該指令寫進程序(批處理、存儲過程或者其他程序都可以)。
Ⅶ oracl怎麼把sql數據腳本導入到數據倉庫中
如果資料庫可以遠程連接,直接使用工具連接就可以導入了如果不支持,有兩種情況:一般虛擬機上都會提供資料庫管理的工具,使用工具就可以。如果不提供,可以在JSP頁面中使用JDBC,連接好資料庫以後,可以使用FileInputStream將文件讀取到內存中,然後在連接好的資料庫執行讀取的語句就可以了
Ⅷ 能給我簡單說一下執行一條sql語句後的內存情況嗎
SQl語句運行時是需要DBMS編譯後,在執行操作。
顧,其執行後,編譯結果會保存一段時間,過期刪除,相同的新請求在有效期內,可以直接運行。
這個和存儲過程的運行是一樣的方式。