導航:首頁 > 編程大全 > sql查詢資料庫佔用內存

sql查詢資料庫佔用內存

發布時間:2021-10-25 22:15:39

❶ 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 SERVER裡面如何查看一個表已經占據的容量

用如下方法查看(以sqlserver2008r2為例):

1、登錄SQL Server Managment Studio。

2、在左側的樹中找到要查詢的表名,如dbo.dept表。

❸ 怎麼處理SQL Server資料庫佔用過多內存

可以設定SQL Server的,內存佔用。
具體的參看:http://jingyan..com/article/624e74594ad38434e9ba5a4b.html

提示的是:
1、在伺服器上,合理的,較多的內存佔用可以加快SQL的服務能力。
2、如個人電腦上測試使用SQL Server,不用時,可以去控制面版中的服務中停止相關的服務,並設定為不自動起動,可以最大的減小SQL Server對電腦的資源佔用。

❹ sql佔用內存瞬間爆滿

在SQL2008會把整個資料庫緩存到內存裡面,就是說你資料庫有多大,就會占內存多個空間,直到把內存占滿,你可以限制SQL 內存
首先我們需要登錄 sql server 2005的資源管理器
滑鼠右擊我們sql server 2005的伺服器,然後選擇「屬性」選項
找到指定資料庫伺服器的屬性中的「內存」屬性,並點擊
接下來就是配置資料庫內存了
http://jingyan..com/article/fedf07377c353f35ac8977f8.html

❺ SQL資料庫佔用內存很大怎麼解決如果設置固定大小的話,會不會影響應用程序

看怎麼分配夠用啦,評估一下你的幾個關鍵應用要站多大內存,
然後分配一下。比如你的服務端程序,IIS各需要多大內存,操作系統需要多少內存,剩下的給Sql Server。
如果內存不夠,那就加內存啰,再不行就加伺服器,不是所有問題都可以靠軟體配置解決的。

❻ 如何解決SQL Server資料庫佔用內存的問題 詳細

經常看見有人問,MSSQL 佔用了太多的內存,而且還不斷的增長;或者說已經
最大的開銷一般是用於數據緩存,如果內存足夠,它會把用過的數據和覺得
你會用到的數據統統扔到內存中,直到內存不足的時候,才把命中率低的數據給
清掉。所以一般我們在看statistics io 的時候,看到的physics read 都是0。
其次就是查詢的開銷,一般地說,hash join 是會帶來比較大的內存開銷的,
而merge join 和nested loop 的開銷比較小,還有排序和中間表、游標也是會
有比較大的開銷的。
所以用於關聯和排序的列上一般需要有索引。
再其次就是對執行計劃、系統數據的存儲,這些都是比較小的。
我們先來看數據緩存對性能的影響,如果系統中沒有其它應用程序來爭奪內
存,數據緩存一般是越多越好,甚至有些時候我們會強行把一些數據pin 在高速
緩存中。但是如果有其它應用程序,雖然在需要的時候MSSQL 會釋放內存,但是
線程切換、IO 等待這些工作也是需要時間的,所以就會造成性能的降低。這樣
我們就必須設置MSSQL 的最大內存使用。可以在SQL Server 屬性(內存選項卡)
中找到配置最大使用內存的地方,或者也可以使用sp_configure 來完成。如果
沒有其它應用程序,那麼就不要限制MSSQL 對內存的使用。
然後來看查詢的開銷,這個開銷顯然是越低越好,因為我們不能從中得到好
處,相反,使用了越多的內存多半意味著查詢速度的降低。所以我們一般要避免
中間表和游標的使用,在經常作關聯和排序的列上建立索引。

❼ 如何查詢當前執行過後最消耗內存的sql語句是那句

--當前執行sql語句

SELECT a.SID ,
a.SERIAL# ,
a.USERNAME ,
b.PARSE_CALLS ,
b.PARSING_SCHEMA_NAME ,
b.CPU_TIME / 1000000 ,
b.ELAPSED_TIME / 1000000 ,
b.DISK_READS ,
b.DIRECT_WRITES ,
b.BUFFER_GETS ,
a.event ,
b.sql_text ,
b.SQL_FULLTEXT
FROM v$session a
INNER JOIN v$sqlarea b ON a.SQL_HASH_VALUE = b.hash_value
AND b.PARSING_SCHEMA_NAME = UPPER('smsdb')

--物理讀最高sql語句

SELECT a.USERNAME ,
a.USER_ID ,
b.PARSE_CALLS ,
b.PARSING_SCHEMA_NAME ,
b.CPU_TIME / 1000000 ,
b.ELAPSED_TIME / 1000000 ,
b.DISK_READS ,
b.DIRECT_WRITES ,
b.BUFFER_GETS ,
b.sql_text ,
b.SQL_FULLTEXT
FROM dba_users a
INNER JOIN v$sqlarea b ON a.USER_ID = b.PARSING_USER_ID
AND b.PARSING_SCHEMA_NAME = UPPER('smsdb')
AND disk_reads > 1000000

--查詢前10名執行最多次數SQL語句

SELECT sql_text 'SQL語句' ,
executions '執行次數'
FROM ( SELECT sql_text ,
executions ,
RANK() OVER ( ORDER BY executions DESC ) exec_rank
FROM v$sqlarea
)
WHERE exec_rank <= 10;

--查詢前10名佔用最高的SQL語句

select sql_text 'SQL語句',

c_t 'SQL執行時間(秒)',executions '執行次數',cs '每次執行時間(秒)'from (select sql_text,

cpu_time /1000000 c_t,executions,ceil(executions/(cpu_time/1000000))cs,

rank() over(order by cpu_time desc) top_time

from v$sqlarea) where top_time <= 10

--查詢前10名執行時間最長SQL語句

SELECT sql_text 'SQL語句' ,
c_t '處理時間(秒)' ,
executions '執行次數' ,
cs '每次執行時間(秒)'
FROM ( SELECT sql_text ,
ELAPSED_TIME / 1000000 c_t ,
executions ,
ceil(executions / ( ELAPSED_TIME / 1000000 )) cs ,
RANK() OVER ( ORDER BY ELAPSED_TIME DESC ) top_time
FROM v$sqlarea
)
WHERE top_time <= 10

--查詢前10名最耗資源SQL語句

SELECT sql_text 'SQL語句' ,
DISK_READS '物理讀次數' ,
cs '每次執行時間(秒)'
FROM ( SELECT sql_text ,
ELAPSED_TIME / 1000000 c_t ,
executions ,
ceil(executions / ( ELAPSED_TIME / 1000000 )) cs ,
DISK_READS ,
RANK() OVER ( ORDER BY DISK_READS DESC ) top_disk
FROM v$sqlarea
)
WHERE top_disk <= 10

--查詢前10名最耗內存SQL語句

select sql_text 'SQL語句',

BUFFER_GETS '內存讀次數',cs '每次執行時間(秒)'

from (select sql_text,

ELAPSED_TIME / 1000000 c_t,executions,ceil(executions/(ELAPSED_TIME/1000000))cs,BUFFER_GETS,

rank() over(order by BUFFER_GETS desc) top_mem

from v$sqlarea) where top_mem <= 10

--查看鎖表語句

Select

c.sid,

c.serial#,

d.name,

b.object_name,

c.username,

c.program,

c.osuser

from gv$Locked_object a, All_objects b, gv$session c, audit_actions d

where a.object_id = b.object_id

and a.inst_id = c.inst_id(+)

and a.session_id = c.sid(+)

and c.command = d.action;

❽ sql資料庫佔用內存太大如何處理

sql server沒有辦法釋放內存,內存都是系統自動管理的
除非你殺調哪些佔用內存大的進程
sql 語句沒寫好,死鎖...都會導致佔用內存很大
select * from master..sysprocesses

kill spid --spid 就是上面查到的spid欄位

❾ 為什麼讀取SQL的資料庫會佔用內存那麼大

因為SQL使用了緩存技術,所以在使用一段時間以後內存佔用會越來越多。

打開企業管理器,在你的SQL伺服器上點右鍵,查看屬性。

在「內存」項中把內存的「最大值」改小一點,不要超過你的內存的一半,或者選中「使用固定的內存大小」,然後將值設定為你內存的一半也可以。

❿ sqlserver如何查詢sql語句佔用內存多少

SQL語句本身佔用的內存,好象沒有吧。SQL語句執行過程的狀態,可以使用語句:
SELECT s2.dbid,
s1.sql_handle,
(SELECT TOP 1 SUBSTRING(s2.text,statement_start_offset / 2+1 ,
( (CASE WHEN statement_end_offset = -1
THEN (LEN(CONVERT(nvarchar(max),s2.text)) * 2)
ELSE statement_end_offset END) - statement_start_offset) / 2+1)) AS sql_statement,
execution_count,
plan_generation_num,
last_execution_time,
total_worker_time,
last_worker_time,
min_worker_time,
max_worker_time,
total_physical_reads,
last_physical_reads,
min_physical_reads,
max_physical_reads,
total_logical_writes,
last_logical_writes,
min_logical_writes,
max_logical_writes
FROM sys.dm_exec_query_stats AS s1
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2
WHERE s2.objectid is null
ORDER BY s1.sql_handle, s1.statement_start_offset, s1.statement_end_offset;

閱讀全文

與sql查詢資料庫佔用內存相關的資料

熱點內容
可搜索 網站 在線觀看 瀏覽:816
對數據真實性負有什麼權 瀏覽:604
elonafix版本錯誤 瀏覽:70
百度網路推廣的形式 瀏覽:691
word左邊顯示提綱 瀏覽:810
台灣最好看的三極武工片 瀏覽:98
2021最新電影免費觀看的網址 瀏覽:629
韓國推理片在線播放 瀏覽:110
推薦韓日推理電影 瀏覽:989
華師大電影院 瀏覽:971
重生漢靈帝劉宏的小說 瀏覽:512
kktv怎麼調到網路電視 瀏覽:341
數據評價的方法有哪些 瀏覽:399
日韓好看電影 瀏覽:170
什麼怪談電影恐怖片 瀏覽:787
哪些渠道可以查看行業數據 瀏覽:88
無需下載免費在線觀看電影 瀏覽:230
真實里的馬尾女叫什麼名字 瀏覽:548
電腦網線區域網傳輸文件 瀏覽:805
win8文件批量重命名 瀏覽:843

友情鏈接