导航:首页 > 编程大全 > 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查询数据库占用内存相关的资料

热点内容
台湾恐怖片排行榜 浏览:282
手机病毒文件格式有哪些 浏览:938
一品侠手机网排行榜 浏览:572
詩織与拓马 浏览:359
主角叫齐天出狱的小说 浏览:914
主角叫张凡的都市小说 浏览:12
台湾电影在线观看免费版 浏览:527
都市美艳后官txt下载 浏览:499
KTV的女人韩国电影 浏览:642
qq网名3个字的伤感 浏览:125
韩语字幕的韩剧在哪看 浏览:458
胸大的美女电影 浏览:370
win10屏幕边界 浏览:667
qq影音绿色版免安装 浏览:519
狼养大的孩子电影叫什么名字 浏览:438
性感模特李采潭 浏览:944
杨颖文章演的电影叫什么 浏览:586
腾讯文件夹里有哪些文件可以清理 浏览:489
有没有很好的成人版电影网站 浏览:846
全球票房实时查询 浏览:211

友情链接