当前位置:首页 » 编程语言 » sqlserver2008内存分配
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlserver2008内存分配

发布时间: 2022-03-07 15:50:44

‘壹’ sql server 2008 r2 启用awe后 内存的管理

会自动释放的。内存缓存一些查询,tempdb,存储等。不是把所有数据放到内存里面。你才10G,那100G,1T的怎么办。这涉及SQL内存管理方面。我也是粗浅的了解了一点。

‘贰’ SQLServer中能手动给使用的表分配内存吗如果可以,如何分配

不能,SQL Server的内存分配是SQL引擎自动分配的,我们只能更改最大值最小值。

在服务器属性里改。

SQL Server占用的内存主要由三部分组成:

数据缓存(Data Buffer)、执行缓存(Procere Cache)、以及SQL Server引擎程序。
其中引擎程序占用的缓存比较固定,也是必须占用的一部分。除此之外,执行缓存是执行的语句解析后存储的地方,而数据缓存则是查询结果等缓存的地方。这两个部分是动态调整的,都不是用户可以支配的。

‘叁’ 如何设置SQL服务器的内存分配

步骤如下:
点击Start > Run
键入WINMSD。
选择Memory选项。
记录下来计算的一个内存值物理存储器(k) SQL数据库的。
初始化SQL企业管理器。
选择为存储器分配将配置的数据库。
用鼠标右键单击在数据库并且选择配置。Server Configuration Options窗口打开。
选择Configuration选项。
移下来对内存行。有三列:“最低、最大数量、运行和当前内存分配”。

‘肆’ sql server2008r2 内存分配

因为SQLserver版本是32位的,你看下win2008是不是64位?

1、安装64位的操作系统,安装64位MSSQL。这方法比较符合硬件,但是要重装软件。


或者

2、打开"SQL Server Management Studio"点服务属性,开启“AWE”,设立最大内存30*1024(保留2G给操作系统用),选中“配置值”。然后重启服务


注:看下操作系统识别出来多内存,如果小于4G,则要为操作系统开启“/PAE”


http://blog.csdn.net/yjg428/article/details/7030353


http://wenku..com/link?url=IPyL4oW-S1BT--3C826P7QtMDnbQlBuQInTO

‘伍’ sql 2008 R2 怎样 释放内存

请限制sql server 可使用的最大内存数
目前发现有部分专享自由型主机由于sqlserver数据库占用的内存过大,造成服务器可用内存资源过少,导致服务器运行缓慢甚至宕机。您可以通过以下方法限制sqlserver占用的最大内存,从而保证服务器有足够的内存可以使用:
1、登录服务器->打开企业管理器
2、打开SQL Server组
3、右键点击 (local)本地实例->选择“属性”
4、点击“内存”项,在其中“最大值”项中可以设定当前sqlserver可占用的最大内存

‘陆’ 请教关于Sql Server2008R2是如何对物理内存分配使用的

没什么好怕的, 如果你的使用量太大, sqlserver会占用所有内存, 这是正常现象。
你唯一需要注意的是:
1. SqlServer服务器的cpu高不高?(看任务管理器)
2. 慢的SQL有哪些?
下面的sql可以帮你, 应该直接在服务器上查询:

SQL code?

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].Proc_DBA_GetSlowSQL') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].Proc_DBA_GetSlowSQL
GO
-- =============================================
-- Author: yenange
-- Create date: 2015-12-17
-- Description: 取得最近执行缓慢的SQL语句
-- =============================================
CREATE PROCEDURE dbo.Proc_DBA_GetSlowSQL
@topNum INT = 50 --取前多少条记录
,@lastExecutionTime DATETIME = NULL --最后执行时间, 默认为NULL. 为 NULL 则忽略此条件; 不为NULL 则取大于此参数之后执行的
,@excludeNight BIT=1 --是否 排除晚上的信息? 默认=1 排除。选择是=1,后面两参数才有意义
,@nightBegin CHAR(5)='22:00' --"晚上"开始时间点, 默认 22:00
,@nightEnd CHAR(5)='06:00' --"晚上"结束时间点, 默认 06:30
,@containSQL NVARCHAR(300)=NULL --语句中包含的SQL. 默认为NULL. 为NULL则忽略此条件; 不为NULL则取包含此参数的记录
AS
BEGIN
SET NOCOUNT ON
DECLARE @nightBegin_num INT
DECLARE @nightEnd_num INT
SET @nightBegin_num=CAST( replace(@nightBegin,':','') AS INT)
SET @nightEnd_num=CAST( replace(@nightEnd,':','') AS INT)

SET ROWCOUNT @topNum
SELECT
st.text AS SQL_Full --父级完整语句
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) as SQL_Part --统计对应的部分语句
, CAST( ((qs.total_elapsed_time / 1000000.0)/qs.execution_count) AS DECIMAL(28,2) ) AS [平均消耗秒数]
, CAST(qs.last_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [最后完成消耗秒数]
, qs.last_execution_time AS [最后执行时间]
, CAST(qs.min_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [最小消耗秒数]
, CAST(qs.max_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [最大消耗秒数]
, CAST(qs.total_elapsed_time / 1000000.0 AS DECIMAL(28, 2)) AS [总消耗秒数]
, (qs.execution_count) AS [总执行次数]
, creation_time AS [编译计划的时间]
, CAST(qs.last_worker_time / 1000000.0 AS DECIMAL(28, 2)) AS [最后完成占用CPU秒数]
, sql_handle,statement_start_offset,statement_end_offset
,plan_generation_num,plan_handle,creation_time
,last_execution_time,execution_count
,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,total_logical_reads,last_logical_reads,min_logical_reads,max_logical_reads
,total_clr_time,last_clr_time,min_clr_time,max_clr_time
from sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE
--1. 最后执行时间
(@lastExecutionTime IS NULL OR qs.last_execution_time>=@lastExecutionTime)
--2. 包含 SQL 条件
AND
(@containSQL IS NULL OR st.[text] LIKE '%'+@containSQL+'%')
AND
--3. 是否排除晚上
(
@excludeNight=0
OR
(
--2.1 开始大于结束 22:00->6:30 [ x >=6:30(end) and x<22:00(begin) ]
@nightBegin_num>@nightEnd_num AND
(
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)>=@nightEnd_num
AND
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)<@nightBegin_num
)
)
OR
(
--2.2 开始小于结束 1:00->6:30 [ x>=0:00 and x<1:00 or x>=6:30 and x<24:00 ]
@nightBegin_num<@nightEnd_num AND
(
(
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)>=0
AND
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)<@nightBegin_num
)
OR
(
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)>=@nightEnd_num
AND
CAST( replace(CONVERT(varchar(5),last_execution_time,108),':','') AS INT)<2400
)
)
)
)
ORDER BY qs.last_elapsed_time DESC

SET NOCOUNT OFF
SET ROWCOUNT 0
END
GO
EXEC sys.sp_addextendedproperty
@name=N'Version', @value=N'1.1' ,
@level0type=N'SCHEMA',@level0name=N'dbo',
@level1type=N'PROCEDURE',@level1name=N'Proc_DBA_GetSlowSQL'

‘柒’ 新装SQL server 2008 快速占满大量内存 问题蹊跷 高分求助

内存能占用到多少?一般新安装什么都没操作的话,是不会占用什么内存的
建议用profiler监控一下是否有什么内部进程或程序在访问

-------------------
这个嘛,R2有sp2补丁,可以打一下看看,有些内部问题确实是由于系统自身的原因的

-------------------
服务器这里的配置确实不太了解,学习了呵呵

‘捌’ 怎么设置sql2008数据库最大服务器内存

1、1.选择“开始 > 所有程序 > Microsoft SQL Server 2008 R2 > SQL Server Management Studio”。系统显示“连接到服务器”界面。
2、2.输入各项数据,单击连接
3、3.系统显示“对象资源管理器”界面
4、4.上图单击右键,在弹出的快捷菜单中选择“属性”。
5、5.在左侧导航栏中选择“内存”,将右侧“最大服务器内存”的值设置为物理内存的60%,本例以8G内存为例
6、6.最后单击确定,设置完成

‘玖’ 如何解决sql server 2008占用6个多G的内存

你说的是数据库文件吧,主要是日志太大了,收缩下数据库日志就可以了;
网络搜索“sql收缩日志”的代码,放到查询分析器里面执行下就可以了;