免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

sqlserver加緩存,sqlserver內存占用

SQL Server占用內存過高,什么原因導致的,用什么方法可以解決

SQL Server運行越久,占用內存會越來越大。因為sql server本身內存回收機制做的不好,這是微軟系列的服務器數據庫問題的通病。

成都創新互聯堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站建設、成都網站制作、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的秦都網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

解決SQL Server占用內存過高的方法:

1.定期重啟SQL Server 2008 R2數據庫服務即可。

2.進入Sql server 企業管理器,在數據庫服務器名稱上點擊【右鍵】,選擇【屬性】,然后,找到【內存】選項,在右邊的【使用AWE分配內存】(sqlServer64的應該不用勾)左邊把對勾打上。在最大服務器內存(MB)上填入適當的大小(不能超過計算機的物理內存)點確定,重啟一下Sql服務器。

拓展資料

SQL Server 是Microsoft 公司推出的關系型數據庫管理系統。具有使用方便可伸縮性好與相關軟件集成程度高等優點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2012 的大型多處理器的服務器等多種平臺使用。

Microsoft SQL Server 是一個全面的數據庫平臺,使用集成的商業智能 (BI)工具提供了企業級的數據管理。Microsoft SQL Server 數據庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使您可以構建和管理用于業務的高可用和高性能的數據應用程序。

百度百科Microsoft SQL Server

sqlserver2005怎么設置內存

SQLSERVER的內存用在哪里?

SQL會緩存大量的數據頁面,他還會緩存很多其他信息,包括存儲過程的執行計劃 ,特定用戶的安全上下文等

如果這些信息沒有在數據庫中緩存,SQL都要重新計算一遍,花額外的時間,所以SQLSERVER對內存的需求是十分強烈的。

配置:

(1)如果服務器支持64位操作系統,沒有特殊理由的話,請安裝64位系統。這樣SQL能夠有效地使用 大于2GB的內存。如果一定要用32位系統,務必將SQLSERVER服務器屬性里面的“使用AWE分配內存”打開。但是不要用boot.ini文件里的/3GB這個開關,即不要在boot.ini文件里加上/3GB這個參數。

(2)盡量使服務器專門供數據庫使用,不要將其他服務(例如IIS,中間層應用服務等)安裝在同一臺機器上。多個生產應用服務在同一臺機器上運行,會大大增加維護成本

(3)建議設置SQLSERVER max server memory(最大服務器內存),以確保Windows有足夠的內存供系統本身使用。

情況歸納如下:

一臺4GB機器,建議預留1GB,設置SQLSERVER max server memory為2.8GB

一臺8GB機器,建議預留2GB,設置SQLSERVER max server memory為6GB

一臺大于8GB的64位機器,建議預留3GB~4GB

如果一臺服務器上還有其他應用使用內存,也要扣除他們的內存使用數

一般設置SQLSERVER min server memory(最小服務器內存)意義不大

(4)如果是企業版SQLSERVER,建議賦給SQLSERVER啟動帳號lock page in memory的權限

設置方法如下:

打開組策略(運行 ,輸入gpedit.msc)-》找到計算機配置-》Windows設置-》安全設置-》本地策略-》用戶權限分配-》鎖定內存頁

在鎖定內存頁上右鍵,打開鎖定內存頁屬性,添加SQLSERVER啟動帳號進去

(5)“set working set size” 這個SQLSERVER參數在現在的Windows上不能起到固定SQL物理內存的作用,所以請永遠不要使用

修改完配置之后需要重啟SQLSERVER服務才能生效!!!!!

除了配置之外還有一些應對內存錯誤的其他一些建議:

升級Windows2003到SP2,或者使用Windows2008 ,這些版本的Windows的內存管理機制有了調整

升級硬件驅動程序,或者聯系微軟技術服務,幫忙檢查是不是硬件方面問題引起

如何開啟SQLSERVER數據庫緩存

開始-程序-sql server 2005-sql server configuration mananger-sqlexpress協議-雙擊右側的TCP/IP協議

JDBC訪問SQLServer有沒有緩存?存在那里?用的服務器是tomcat,數據庫為本地和異地的時候,是否都有緩存?

什么是緩存,什么是內存?如果說是List的話那是默認將數據添加到列表對象的內存堆棧中。jdbc就沒有緩存,你可以每次執行一條sql然后在ide調試狀態下去看看你的數據庫中執行的sql就明白了,如果要將查詢對象緩存需要自己實現,現在一些成熟的項目ehcache,oscache等等,還有就是自己實現了。

sql配置緩存大小原因

數據緩存和執行緩存的控制。

SQLServer占用的內存主要由三部分組成:數據緩存(DataBuffer)、執行緩存(ProcedureCache)、以及SQLServer引擎程序。SQLServer引擎程序所占用緩存一般相對變化不大,則我們進行內存調優的主要著眼點在數據緩存和執行緩存的控制上。

SQL語句在執行前首先將被編譯并通過查詢優化引擎進行優化,從而得到優化后的執行計劃,然后按照執行計劃被執行。對于整體相似、僅僅是參數不同的SQL語句,SQLServer可以重用執行計劃。但對于不同的SQL語句,SQLServer并不能重復使用以前的執行計劃,而是需要重新編譯出一個新的執行計劃。同時,SQLServer在內存足夠使用的情況下,此時并不主動清除以前保存的查詢計劃。這樣,不同的SQL語句執行方式,就將會大大影響SQLServer中存儲的查詢計劃數目。如果限定了SQLServer最大可用內存,則過多無用的執行計劃占用,將導致SQLServer可用內存減少,從而在執行查詢時尤其是大的查詢時與磁盤發生更多的內存頁交換。如果沒有限定最大可用內存,則SQLServer由于可用內存減少,從而會占用更多內存。

SQLServer數據庫收縮相關知識

SQL Server 數據庫采取預先分配空間的方法來建立數據庫的數據文件或者日志文件,比如數據文件的空間分配了300MB,而實際上只占用了20MB空間,這樣就會造成磁盤存儲空間的浪費。可以通過數據庫收縮技術對數據庫中的每個文件進行收縮,刪除已經分配但沒有使用的頁。從而節省服務器的存儲的成本。

官方解釋:收縮數據文件通過將數據頁從文件末尾移動到更靠近文件開頭的未占用的空間來恢復空間。在文件末尾創建足夠的可用空間后,可以取消對文件末尾的數據頁的分配并將它們返回給文件系統。

收縮后的數據庫不能小于數據庫最初創建時指定的大小。 或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)設置的顯式大小。

比如:如果數據庫最初創建時的大小為 10 MB,后來增長到 100 MB,則該數據庫最小只能收縮到 10 MB,即使已經刪除數據庫的所有數據也是如此。

不能在備份數據庫時收縮數據庫。 反之,也不能在數據庫執行收縮操作時備份數據庫。

介紹:收縮指定數據庫中的數據文件大小。

語法格式:

參數說明:

介紹:收縮當前數據庫的指定數據或日志文件的大小,或通過將數據從指定的文件移動到相同文件組中的其他文件來清空文件,以允許從數據庫中刪除該文件。文件大小可以收縮到比創建該文件時所指定的大小更小。這樣會將最小文件大小重置為新值。

語法格式:

參數說明:

例如,如果創建一個10MB 的文件,然后在文件仍然為空的時候將文件收縮為2 MB,默認文件大小將設置為2 MB。這只適用于永遠不會包含數據的空文件。

另附SqlServer常見問題解答

1)管理器不會主動刷新,需要手工刷新一下才能看到最新狀態(性能方面的考慮)

2)很少情況下,恢復進程被掛起了。這個時候假設你要恢復并且回到可訪問狀態,要執行:

RESTORE database dbname with recovery

這使得恢復過程能完全結束。

3)如果你要不斷恢復后面的日志文件,的確需要使數據庫處于“正在還原狀態”,

這通常是執行下面命令:

RESTORE database dbname with norecovery

原來SQL Server對服務器內存的使用策略是用多少內存就占用多少內存,只用在服務器內存不足時,才會釋放一點占用的內存,所以SQL Server 服務器內存往往會占用很高。我們可以通過DBCC MemoryStatus來查看內存狀態。

SQL SERVER運行時會執行兩種緩存:

1. 數據緩存:執行個查詢語句,SQL SERVER會將相關的數據頁(SQL SERVER操作的數據都是以頁為單位的)加載到內存中來, 下一次如果再次請求此頁的數據的時候,就無需讀取磁盤了,大大提高了速度。

2.執行命令緩存:在執行存儲過程,自定函數時,SQL SERVER需要先二進制編譯再運行,編譯后的結果也會緩存起來, 再次調用時就無需再次編譯。

可以調用以下幾個DBCC管理命令來清理這些緩存:

但是,這幾個命令雖然會清除掉現有緩存,為新的緩存騰地方,但是Sql server并不會因此釋放掉已經占用的內存。SQL SERVER并沒有提供任何命令允許我們釋放不用到的內存。因此我們只能通過動態調整SQL SERVER可用的物理內存設置來強迫它釋放內存。

解決SQLSERVER內存占用過高的方法:

1、清除所有緩存DBCC DROPLEANBUFFERS

2、調整SQLSERVER可使用的最大服務器內存。

在SQL管理器,右擊實例名稱

在屬性實例屬性里面找到內存選項

把最大內存改成合適的內存,確定后內存就會被強制釋放,然后重啟實例。再看看任務管理器,內存使用率就降下來啦。

1、查看連接對象

USE master

GO

--如果要指定數據庫就把注釋去掉

SELECT * FROM sys.[sysprocesses] WHERE [spid]50 --AND DB_NAME([dbid])='gposdb'

當前連接對象有67個其中‘WINAME’的主機名,‘jTDS’的進程名不屬于已知常用軟件,找到這臺主機并解決連接問題。在360流量防火墻中查看有哪個軟件連接了服務器IP,除之。

2、然后使用下面語句看一下各項指標是否正常,是否有阻塞,正常情況下搜索結果應該為空。

SELECT TOP 10

[session_id],

[request_id],

[start_time] AS '開始時間',

[status] AS '狀態',

[command] AS '命令',

dest.[text] AS 'sql語句',

DB_NAME([database_id]) AS '數據庫名',

[blocking_session_id] AS '正在阻塞其他會話的會話ID',

[wait_type] AS '等待資源類型',

[wait_time] AS '等待時間',

[wait_resource] AS '等待的資源',

[reads] AS '物理讀次數',

[writes] AS '寫次數',

[logical_reads] AS '邏輯讀次數',

[row_count] AS '返回結果行數'

FROM sys.[dm_exec_requests] AS der

CROSS APPLY

sys.[dm_exec_sql_text](der.[sql_handle]) AS dest

WHERE [session_id]50 AND DB_NAME(der.[database_id])='gposdb'

ORDER BY [cpu_time] DESC

查看是哪些SQL語句占用較大可以使用下面代碼

--在SSMS里選擇以文本格式顯示結果

SELECT TOP 10

dest.[text] AS 'sql語句'

FROM sys.[dm_exec_requests] AS der

CROSS APPLY

sys.[dm_exec_sql_text](der.[sql_handle]) AS dest

WHERE [session_id]50

ORDER BY [cpu_time] DESC

3、如果SQLSERVER存在要等待的資源,那么執行下面語句就會顯示出會話中有多少個worker在等待

SELECT TOP 10

[session_id],

[request_id],

[start_time] AS '開始時間',

[status] AS '狀態',

[command] AS '命令',

dest.[text] AS 'sql語句',

DB_NAME([database_id]) AS '數據庫名',

[blocking_session_id] AS '正在阻塞其他會話的會話ID',

der.[wait_type] AS '等待資源類型',

[wait_time] AS '等待時間',

[wait_resource] AS '等待的資源',

[dows].[waiting_tasks_count] AS '當前正在進行等待的任務數',

[reads] AS '物理讀次數',

[writes] AS '寫次數',

[logical_reads] AS '邏輯讀次數',

[row_count] AS '返回結果行數'

FROM sys.[dm_exec_requests] AS der

INNER JOIN [sys].[dm_os_wait_stats] AS dows

ON der.[wait_type]=[dows].[wait_type]

CROSS APPLY

sys.[dm_exec_sql_text](der.[sql_handle]) AS dest

WHERE [session_id]50

ORDER BY [cpu_time] DESC;

4、查詢CPU占用最高的SQL語句

SELECT TOP 10

total_worker_time/execution_count AS avg_cpu_cost, plan_handle,

execution_count,

(SELECT SUBSTRING(text, statement_start_offset/2 + 1,

(CASE WHEN statement_end_offset = -1

THEN LEN(CONVERT(nvarchar(max), text)) * 2

ELSE statement_end_offset

END - statement_start_offset)/2)

FROM sys.dm_exec_sql_text(sql_handle)) AS query_text

FROM sys.dm_exec_query_stats

ORDER BY [avg_cpu_cost] DESC;

5、索引缺失查詢

SELECT

DatabaseName = DB_NAME(database_id)

,[Number Indexes Missing] = count(*)

FROM sys.dm_db_missing_index_details

GROUP BY DB_NAME(database_id)

ORDER BY 2 DESC;

SELECT TOP 10

[Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)

, avg_user_impact

, TableName = statement

, [EqualityUsage] = equality_columns

, [InequalityUsage] = inequality_columns

, [Include Cloumns] = included_columns

FROM sys.dm_db_missing_index_groups g

INNER JOIN sys.dm_db_missing_index_group_stats s

ON s.group_handle = g.index_group_handle

INNER JOIN sys.dm_db_missing_index_details d

ON d.index_handle = g.index_handle

ORDER BY [Total Cost] DESC;

找到索引缺失的表,根據查詢結果中的關鍵次逐一建立索引。

網站標題:sqlserver加緩存,sqlserver內存占用
本文URL:http://newbst.com/article36/dssgopg.html

成都網站建設公司_創新互聯,為您提供響應式網站品牌網站設計網站營銷網站策劃品牌網站制作自適應網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化