如何设置SQLServer数据库内存

如何设置SQLServer数据库内存,第1张

1、打开SQL Sever 2008 R2数据库

2、在打开的连接到服务器对话框中,输入相关连接信息后,点击“连接”

3、右键数据库根节点,选择“属性”

4、d出服务器属性页,选择页中包含常规、内存、处理器等选项

5、在选择页中我们点击“内存”,我们可以修改每次查询占用的最小内存值

6、在选择页中切换到“安全性”,我们可以重新设置服务器身份验证的模式

首先,安装了sqlserver的电脑并且具有网络功能的就可以称作数据库服务器那么只要你开机开启数据库服务,tcp/ip协议以及保证网络连接端口畅通,那么其他人可以通过sqlserverstudio客户端,用你的ip直接登录访问你的数据库我说的那些服务、协议端口都在sql配置管理器中设置

大小限制肯定是有的,但是99%的人都用不到上限,一般情况下你可以当他没有限制就好了。

具体限制请参考MSDN上的解释:

>

SQL会缓存大量的数据页面,他还会缓存很多其他信息,包括存储过程的执行计划 ,特定用户的安全上下文等

如果这些信息没有在数据库中缓存,SQL都要重新计算一遍,花额外的时间,所以SQLSERVER对内存的需求是十分强烈的。

配置原则:

(1)如果服务器支持64位 *** 作系统,没有特殊理由的话,请安装64位系统。这样SQL能够有效地使用 大于2GB的内存。如果一定要用32位系统,务必将SQLSERVER服务器属性里面的“使用AWE分配内存”打开。但是不要用bootini文件里的/3GB这个开关,即不要在bootini文件里加上/3GB这个参数。

(2)尽量使服务器专门供数据库使用,不要将其他服务(例如IIS,中间层应用服务等)安装在同一台机器上。多个生产应用服务在同一台机器上运行,会大大增加维护成本

(3)建议设置SQLSERVER max server memory(最大服务器内存),以确保Windows有足够的内存供系统本身使用。

情况归纳如下:

一台4GB机器,建议预留1GB,设置SQLSERVER max server memory为28GB

一台8GB机器,建议预留2GB,设置SQLSERVER max server memory为6GB

一台大于8GB的64位机器,建议预留3GB~4GB

如果一台服务器上还有其他应用使用内存,也要扣除他们的内存使用数

一般设置SQLSERVER min server memory(最小服务器内存)意义不大

sqlserver最大服务器内存设置(通过T-sql设置):

sp_configure 'show advanced options',1;

go

reconfigure

go

sp_configure 'max server memory',60000;

go

reconfigure

go

sqlserver修改每次查询最小内存:

EXEC sp_configure 'show advanced options', 1;

GO

RECONFIGURE ;

GO

EXEC sp_configure 'min memory per query', 3500 ;

GO

RECONFIGURE;

GO

相关解释:

最小和最大Server内存

Min Server Memory (MB) 和 Max Server Memory (MB)控制所有SQL Server内存使用的许可大小。比起之前的版本,SQL Server 2012的Memory Manager可以更简单地设置SQL Server内存需求的大小。SQL Server服务是以所需的最小量启动的,并根据需要增长。一旦内存使用增长超过Min Server Memory设置,SQL Server将不会释放任何低于该量的内存。Min Server Memory设置内存使用的下限,而Max Server Memory则设置上限。这两个值可以使用sp_configure或通过Management Studio中的SQL Server属性窗口的内存页面进行设置。两个设置中,配置缓冲池的最大值更重要,它会阻止SQL Server占用过多的内存。这在64位系统中尤其重要,因为缺少可用物理内存能够导致Windows裁剪SQL Server的工作集。后面的“锁定内存页”有关于这个问题的完整描述。对于配置Max Server Memory,有一些不同的方法来计算合适的值,最直接的方法是看看SQL Server的最大使用量

默认情况下,SQLServer会依据可获得的系统资源动态改变它的内存需求。如果SQLServer需要更多的内存,它会要求 *** 作系统确定是否有空闲的物理内存可用,并使用可用的内存。若SQLServer不再需要当前分配给它的内存,它就将内存释放给 *** 作系统。当SQLServer动态使用内存时,它要求系统定期地检测可用的物理内存数量。SQLServer根据服务器活动增大或收缩高速缓冲存储器,以使可用物理内存保持在4MB到10MB之间。这就避免了系统进行换页 *** 作。[也就是说,这种情况下SQLSERVER本身不会使物理可用内存小于4M,如果比较长的时间内都小于4M的话,则要看一下是不是该服务器上其它应用程序有问题]第二种情况:限制使用内存使用setworkingsetsize为sqlserver保留等于服务器内存设置的物理内存空间。即使是sqlserver进程此时是空闲的,系统也不会将SQLServer页交换出去。使用minservermemory保证sqlserver使用的最小内存。SQLServer启动时不立即分配minservermemory中所指定的内存量。但是,当内存使用由于客户端负荷而达到该值后,SQLServer将无法从已分配的缓冲池中释放内存。使用maxservermemory则防止SQLServer使用多于指定数量的内存,这样剩余的可用内存可以快速运行其它应用程序。SQLServer启动时不立即分配maxservermemory中所指定的内存。内存使用随SQLServer的需要而增长,直到达到maxservermemory中所指定的值。SQLServer无法超过该内存使用值,除非增加maxservermemory值。第一种情况比较适用于服务器专做sqlserver服务器的情况,第二种情况适用于为在同一台计算机上运行的其它应用程序保留一定的内存以便于快速响应。(另:如果想动态分配sqlserver的内存,则不要设置setworkingsetsize选项,使用默认值即可。至于这些参数如何设置参见另外的文档)监视SQLServer所使用的内存和计数器有助于确定:是否由于缺少可用物理内存存储高速缓存中经常访问的数据而导致瓶颈存在。如果是这样,SQLServer必须从磁盘检索数据。是否可通过添加更多内存或使更多内存可用于数据高速缓存或SQLServer内部结构来提高查询性能。SQLServer需要从磁盘读取数据的频率。与其它 *** 作相比,例如内存访问,物理I/O会耗费大量时间。尽可能减少物理I/O可以提高查询性能。对sqlserver服务器内存的监视:Memory:AvailableBytes计数器表示当前进程可使用的物理内存字节数。如果小于4M或更小,说明计算机上总的内存可能不足,或某个程序没有释放内存●Memory:PageFaults/sec每秒软性页面失效的数目(包括有些可以直接在内存中满足而有些需要从硬盘读取)较page/sec只表明数据不能在内存指定工作集中立即使用。如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。Memory:Pages/sec计数器表示由于缺页处理而从磁盘取回的页数,或由于缺页处理而写入磁盘以释放工作集空间的页数。●PageReads/sec每秒发出的物理数据库页读取数。这一统计信息显示的是在所有数据库间的物理页读取总数。由于物理I/O的开销大,可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,使开销减到最小。●PageWrites/sec所发出的物理数据库页写入的数目。若查看原帖>>

sql如何查询第一个数据的方法。

如下参考:

1首先,双击“ManagementStudio”图标打开SQLServer。

2继续打开SQLServer窗口,单击工具栏中的“newquery”图标。

3在SQLServer第二窗口,输入来自SQL语句的查询数据到SQLServer数据库。

4然后在SQLServer窗口,单击工具栏中的“execute”图标。

5最后,在SQLServer窗口中,成功地显示了SQLServer数据库中的查询数据结果。

下面以 sqlserver数据库为例进行说明。

select from TableA where b in (select  b from  TableA group  by  b having  count(b) > 1)

这样就列举出了b字段所有的重复数据,可以根据对应的行号,取得位于第几行。

如果要查询a字段或者c字段重复数据,可以相应的把上面的b字段替换成a字段或c字段即可。

举例:

1、创建表student

2、查询语句: select from student where name in (select  name from  student group  by  name   having  count(name ) > 1)

这样就查出名字重复列,以及行号id。

扩展资料:

1 sqlserver其他相关的一些查询:

(1)删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

delete from people where peopleId in

(select   peopleId from people group by   peopleId   having count(peopleId) > 1) and

rowid not in (select min(rowid) from   people group by peopleId having count(peopleId)>1)

(2)查找表中多余的重复记录(多个字段) 

select from vitae a where (apeopleId,aseq) in

(select peopleId,seq from vitae group by peopleId,seq having count() > 1)

(3)查找表中多余的重复记录(多个字段),不包含rowid最小的记录

select from vitae a where (apeopleId,aseq)  in

(select peopleId,seq from vitae group by peopleId,seq havingcount() > 1) and

rowid not in (select min(rowid) from vitae group by peopleId,seq having count()>1)

2 SQL语言元素

1、子句,是语句和查询的组成部分。

2、表达式,可以生成标量值,也可以生成由列和行数据组成的表。

3、谓词,指定可以评估为SQL三值逻辑(3VL)(真/假/未知)或布尔真值的条件,用于限制语句和查询的效果,或用于更改程序流。

4、查询,根据特定条件检索数据。这是SQL的一个重要元素。

语句可能对架构和数据产生持久影响,或者可能控制事务,程序流,连接,会话或诊断。

SQL语句还包括分号(“;”)语句终止符。虽然并非每个平台都需要,但它被定义为SQL语法的标准部分。在SQL语句和查询中通常会忽略无关紧要的空格,从而可以更轻松地格式化SQL代码以提高可读性。

参考资料:

百度百科-SQL语法

select top 1 值字段 from table1 where 日期字段='2012-9-10'---得到第一条数据的值

select top 1 值字段 from table1 where 日期字段='2012-9-10' order by 某字段 desc---》根据某个字段倒序, 得到第一条数据的值 即 最后一条数据的值

select (select top 1 值字段 from table1 where 日期字段='2012-9-10' order by 某字段 desc)-(select top 1 值字段 from table1 where 日期字段='2012-9-10' ) from table1 where 日期字段='2012-9-10'

没有明确的表结构 ,我也只能给你写个大概,自己根据这个意思再改改 就行了

以上就是关于如何设置SQLServer数据库内存全部的内容,包括:如何设置SQLServer数据库内存、sqlserver2012数据库问题(SQL_Server_2008数据库试题)、sqlserver数据库有大小限制吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9770086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存