sql server 在占用服务器内存居高不下怎么办
1、SQL Server 作为一个数据库服务系统,它的作用就是以尽可能高效、实用的方式管理数据,所以,它占用服务器内存高是很普遍的现象。
2、但是如果在SQL数表设计、存储过程代码编写、临时表的应用中,不注意考虑内存占用与释放,CPU运算,可能会额外的造成不必要的内存占用、CPU占用等。
3、SQL Server在运行过程中,一般会以它认为需要的量去占用内存,对于企业实际运行的SQL Server来说,一般都使用专业级别的服务器,一般都配上几十甚至上百G的内存,不过,即便是这样,内存也不一定够,它基本上会把设定为它可以用的内存给吃干净。因为它的目标就是以最高的效率查找和提供数据。
4、如果它的内存占用你受不了,让你的电脑没法正常运作了,那你可以设定它的最大内存占用,一般去SQL Server管理工具中,找服务器的属性,然后找到相关的参数,作个调整即可。
5、如果你是在你工作或娱乐的电脑上安装了一个SQL Server,用于工作或学习,那么,在不用时,停止SQL Server相关服务,内存即可被基本完全空出(它对CPU的占用也会停止)。(SQL Server 2000及以前版本在托盘中有一个小工具可以控制起动或停止,其后的版本,需要去控制面版中的“服务”中去停相关的应用。)
SQL Server 2008 或者R2的默认内存分配是2147483647MB, 差不多算是无穷大,对于系统内存的管理策略是有多少占多少。SQLserver会把所有处理过的SQL操作缓存在内存里,这样就不用总去读硬盘了。但是如果长时间运行SQL Server, 系统内存被用的差不多,再开启其他程序就有可能会报内存不足。这时候就需要释放内存缓存啦。一般我用以下两种办法:
很简单,打开SQL Server configuration Manager,然后把SQL Server(MSSQLSERVER)重启一下,一般默认的instance 就是MSSQLServer,当然你如果装了其他的instance(实例)就选择相应的,例如MSSQLServer(SQLServLatin1), MSSQLServer(ARABIC)。
这种方法最简单有效,但是只能临时的清除SQLServer缓存所占的内存空间,时间长了SQLServer还会把内存占满。而且很重要的是这种方法不能在SQLserver有连接的情况下使用,那样会让正在使用SQLServer的用户暂时无法连接SQLServer,甚至导致程序处错误。而你作为管理员就……
第二种方法比较复杂,我也不是SQLServer高手,只是从网上学习得来的一些query:
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
以上一段一般能释放缓存,(注意引号有的时候因为word文档里打不出英文的引号,最好拷到记事本里编辑一下)但是有的时候不是很管用。因为SQLserver不会因为Cache(缓存)释放了而释放内存,占了茅坑不一定XX。此命令只会让SQLServer不会继续占领新的内存,定期执行一下还可以。关键是还要释放一下内存。
通过以下Query 可以看出当前服务器所占内存情况
SELECT FROM sysdm_os_performance_counters
WHERE counter_name IN ('Target Server Memory (KB)','Total Server Memory (KB)')
Target Server Memory(KB)和 Total Server Memory(KB)字面意思所得就是目标和当前SQL Server所占的内存大小。
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'max server memory', 256
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC sp_configure 'max server memory', 2147483647
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0
GO
其实我用这几句也不是很奏效,时间一长还是可能会有内存不够的情况。
总的来说我的管理办法是:
装好了SQLServer之后立刻设置最大使用内存
EXEC sp_configure 'show advanced options', 1 -- 这句是打开advanced options
GO
EXEC sp_configure 'max server memory', 9216 -- 设置最大内存为9G,我们server 内存是16G的,留下7G足够了
EXEC ('RECONFIGURE' )
GO
EXEC sp_configure 'show advanced options', 0 --记得用完了把advanced options关掉
GO
过一段时间觉得不行了就执行一下
DBCC FREEPROCCACHE
DBCC FREESESSIONCACHE
DBCC FREESYSTEMCACHE('All')
DBCC DROPCLEANBUFFERS
这个清缓存也很头疼,不知道什么时候合适,就这样吧,管他呢,我又不是专家,出了问题大不了来机器不行。或者写个Procedure,用job定期执行。
没办法,SQLServer太霸道了,以上方法不是万全之策,建议还是把SQLServer放到一边单独用吧。
1。操作系统最大的功能就是管理功能,管理进程调度、管理内存、管理文件系统、管理I/O,。其中最核心的功能是进程管理,但管理的基础是内存管理,只有把内存管理好了,才能使进程在这个广阔的舞台上自由表演。
2。系统工作模式有三种:实模式、保护模式、虚拟8086模式,其中保护模式又分为:分段保护模式、分段分页保护模式,不同模式下的物理内存管理方式不同。
3。分段保护模式(segmentation):
为了管理好内存,把内存分而治之,划分成小块,这样易于才易于管理。如何划分呢?分段保护模式是把物理内存分段,分成一段一段的区域,每段大小固定/不固定,每段都有不同的用途,这就需要对每个段进行描述,以记录该段有哪些属性或特点,这样在使用该段时才能操作正确。对每个段的描述信息放在“段描述符”中,所有的“段描述符”统一放在一起组成系统的“段描述符表”。“段描述符表”分为“全局描述符表GDT”,“中断描述符表IDT”,“局部描述符表LDT”。当操作系统要访问内存中的某一个段时,先在描述符表中找到该段的描述符,这样就知道了该如何使用该内存段了。简言之,分段是对物理内存分段划分,GDT,LDT,IDT是操作系统使用物理内存的参照依据。
4。段页保护模式(paging):
这是在分段保护模式的基础上,再加上分页功能。把以前的对物理内存的分段改为对虚拟地址空间的分段,把4G的虚拟地址空间分段,段信息仍保存在GDT,LDT,IDT中。然后把物理内存分页,用二级页表结构来描述和记录物理内存分页后的各个页的信息。当使用物理内存时就参照二级页表。
5。使用分页机制的目的:
(1)当系统内存被分成许多凌乱的块时,分页机制可以建立一个大而连续的内存空间映象,程序员不用操心和管理这些分散的内存块。
(2)页地址变换建立在段变换基础上,任何分页机制的保护措施并不会取代段变换的保护措施,而只是进行更进一步的检查操作。
(3)分页机制增强分段的性能。
6。虚拟内存
实现虚拟内存的手段是使用“需求加载Load on demand”和“页换入换出”。所谓的“需求加载”是指:运行一个磁盘上的文件时,操作系统为新进程创建4G线形地址空间,并为其环境参数和命令行参数分配和映射一定数量的物理页,此外并没有给执行程序分配其他任何物理内存页面,也没有从磁盘文件中加载代码和数据。但是,一旦程序从设定的入口点(mian函数)开始运行,就会立刻引起CPU产生一个缺页中断,此时内核中的缺页处理程序才会根据引起缺页异常的具体线形地址把磁盘文件中相关的代码和数据从文件系统中加载到物理内存页面中,并定位到进程逻辑地址中指定的页面位置。这种仅在需要时才加载执行文件中页面的方法称为需求加载技术或需求分页(demand paging)技术。
“页换入和换出”是指:当CPU要寻址的指令或数据不在缓存和物理内存中时,通过需求加载技术把页面加到物理内存,但此时如果物理内存已被全部占用,则必须把物理内存中最近不使用的页面换出到磁盘中,以腾出空间给新页面,这种现在就称为页换入和换出。
7。何时产生GDT,LDT,IDT、二级页目录结构,以及它们位于物理内存的什么位置?
在引导启动程序heads中初始化GDT,IDT和二级页表,它们放在物理内存从地址0x0开始的地方。
计算机操作系统的基本概念
操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。下面是我整理的计算机操作系统的基本概念,希望大家认真阅读!
1、操作系统做什么
注:计算机系统结构作为从程序设计者角度所看到的计算机属性,在计算机系统的层次结构中处于机器语言级;而计算机组织作为计算机系统结构的逻辑实现和物理实现,其任务就是围绕提高性能价格比的目标,实现计算机在机器指令级的功能和特性。研究和建立各功能部件间的相互连接和相互作用,完成各个功能部件内部的逻辑设计等是逻辑实现的内容;把逻辑设计深化到元件、器件级,则是物理实现的内容。
计算机系统可以大致分为四个组成部分:计算机硬件、操作系统、系统程序与应用程序和用户。
硬件为系统提供基本的计算资源,应用程序规定了用户按何种方式使用这些资源,操作系统控制和协调各用户的应用程序对硬件的使用。
从两个视角探索操作系统:用户视角和系统视角。
A、用户视角:
对于PC用户,系统设计是为了让单个用户单独使用其资源,其目的是优化用户所进行的工作。对于这种情况,操作系统的设计目的是为了用户使用方便,性能是次要的,而且不在乎资源使用率。
对于大型机用户,操作系统设计为资源使用做了优化:确保所有的CPU时间、内存和I/O都得到充分使用,并且确保没有用户使用超出其权限以外的资源。
对于工作站用户,操作系统的设计目的是个人使用性能和资源使用率的折中。
对于手持计算机用户,方便个人使用,最大化利用电池能源是操作系统设计的要点。
B、系统视角:
从系统视角,操作系统相当于资源分配器。操作系统管理CPU时间、内存空间等系统资源,在面对许多甚至冲突的资源请求,操作系统必须决定如何为每个程序和用户分配资源,以便计算机系统能有效而公平的运行。
2、计算机系统组织
计算机通过运算器、存储器、控制器、输入输出子系统等主要功能部件的相互连接和相互作用,借以实现机器指令级的各种功能和特性。从最基本的功能和作用原理来说,计算机是在控制器的全面控制下,接收经数字化编码的输入信息(程序和数据),把它存放在存储器中,根据程序的要求对数据进行快速运算,产生结果数据输出。因此,可以把运算器、存储器、控制器、输入输出子系统看成是一台计算机的逻辑组成中最基本的功能部件。
存储设备层次(按总线速率由高到低):
寄存器——高速缓存(Cache)——主存——磁盘——光盘——磁带
3、计算机系统体系结构
通过采用的通用处理器的数量来分类。
A、单处理器系统
在单处理器系统中,有一个主CPU能够执行一个通用指令集,包括来自用户进程的指令。
B、多处理器系统
多处理器系统的优点:
增加吞吐量;规模经济;增加可靠性。
分类:
非对称多处理器(asymmetric multiprocessing)系统——主从关系;
对称多处理器(symmetric multiprocessing)系统——对等关系。
C、集群系统
集群计算机共享存储并通过局域网连接或更快的内部连接。
分类:
非对称集群:一部分机器处于热备份模式,其余的机器运行应用程序。
对称集群:两台或多个主机都运行程序,互相监视。
4、操作系统结构
操作系统理论研究者有时把操作系统分成四大部分:
驱动程序:最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
内核:操作系统内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
接口库:是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
外围:是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。
在这里,需要介绍一些关于内核的知识。
内核是操作系统最核心最基础的构件,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。
内核的结构可以分为单内核、微内核、混合内核、外内核等。
单内核(Monolithic kernel),又称为宏内核。此架构的特性是整个核心程序都是以核心空间(Kernel Space)的身份及监管者模式(Supervisor Mode)来运行(宏内核被实现为运行在单一地址空间的单一的进程,核心提供的所有服务,都以特权模式,在这个大型的核心地址空间中运作,这个地址空间被称为核心空间(kernel space))。相对于其他类型的操作系统架构,如微核心架构或混核心架构等,这些核心会定义出一个高级的虚拟接口,由该接口来涵盖描述整个电脑硬件,这些描述会集合成一组硬件描述用词,有时还会附加一些系统调用,如此可以用一个或多个模块来实现各种操作系统服务,如进程管理、共时(Concurrency)控制、存储器管理等。
微内核(Microkernel),又称为微核心。微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。微核心的设计理念,是将系统服务的实现,与系统的基本操作规则区分开来。它实现的方式,是将核心功能模块化,划分成几个独立的进程,各自运行,这些进程被称为服务器(service)。所有的服务器进程,都运行在不同的地址空间。只有需要绝对特权的进程,才能在具特权的运行模式下运行,其余的进程则在用户 空间运行。
混合内核(Hybrid kernel)像微内核结构,只不过它的组件更多的在核心态中运行,以获得更快的执行速度。混合内核,一种操作系统内核架构,结合整块性核心与单核心两种设计方法。它的架构实作方式接近于整块性核心。最有名的混合核心为Windows NT核心与XNU。
外内核(Exokernel)的设计理念是尽可能的减少软件的抽象化,这使得开发者可以专注于硬件的抽象化。外核心的设计极为简化,它的目标是在于同时简化传统微内核的讯息传递机制,以及整块性核心的软件抽象层。外核的目标就是让应用程序直接请求一块特定的物理空间,一块特定的磁盘块等等。系统本身只保证被请求的资源当前是空闲的,应用程序就允许直接存取它。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议。
5、操作系统操作
双重模式操作:
为了确保操作系统地正常执行,必须区分操作系统代码和用户定义代码的执行。许多操作系统所采取的方法是提供硬件支持以允许区分各种执行模式。
至少需要两种独立的操作模式:用户模式(user mode)和监督程序模式(monitor mode)(也称为管理模式(supervisor mode)、系统模式(system mode)或特权模式(privileged mode))。在计算机硬件中增加一个称为模式位(mode bit)的位以表示当前模式:监督程序模式(0)和用户模式(1)。有了模式位,就可以区分操作系统所执行的任务和用户所执行的任务。
系统引导时,硬件开始处于内核模式。接着,装入操作系统,开始在用户模式下执行用户进程。一旦出现陷阱或中断,硬件会从用户模式切换到内核模式。因此,只要操作系统获得了对计算机的控制,它就处于内核模式。系统在将控制交还给用户程序时会切换到用户模式。
双重模式操作提高了保护操作系统和用户程序不受错误用户程序影响的手段。其实现为:将能引起损害的机器指令作为特权指令。如果在用户模式下试图执行特权指令,那么硬件并不执行该指令,而是认为该指令非法,并将其以陷阱的形式通知操作系统。
系统调用为用户程序请求操作系统代表用户程序完成预留给操作系统的任务提供了方法。系统调用通常采用陷阱到中断向量中的一个指定位置的方式。当系统调用被执行时,硬件会将它作为软件中断。控制权会通过中断向量转交到操作系统的中断处理程序,模式位设置成内核模式。系统调用服务程序是操作系统的一部分。内核检查中断指令以确定发生了什么系统调用;参数表示用户程序请求什么类型的服务。请求所需要的其他信息可通过寄存器、堆栈或内存来传递。内核检验参数是否正确和合法,再执行请求,然后将控制返回到系统调用之后的指令。
6、进程管理
进程是系统工作的单元。系统由多个进程组成,其中一些是操作系统进程(执行系统代码),其余的是用户进程(执行用户代码)。所有这些进程可以潜在地并发执行,如通过在单CPU上采用CPU复用来实现。
操作系统负责下述与进程管理相关的活动:
创建和删除用户进程和系统进程;
挂起和重启进程;
提供进程同步机制;
提供进程通信机制;
提供死锁处理机制。
7、内存管理
内存是现代计算机系统操作的中心。内存通常是CPU所能直接寻址和访问的唯一大容量存储器。
操作系统负责下列有关内存管理的活动:
记录内存的哪部分正在被使用及被谁使用;
当有内存空间是,决定哪些进程可以装入内存;
根据需要分配和释放内存空间。
8、存储管理
操作系统对存储设备上的物理属性进行了抽象,定义了逻辑存储单元,即文件。操作系统将文件映射到物理介质上,并通过这些物理介质来访问这些文件。
A、文件系统管理
文件管理是操作系统最为常见的组成部分。文件是由其创建者定义的一组相关信息的集合。通常,文件表示程序(源程序和目标程序)和数据。
操作系统负责下列有关文件管理的活动:
创建和删除文件;
创建和删除目录来组织文件;
提供操作文件和目录的原语;
将文件映射到二级存储上;
在稳定介质上备份文件。
B、大容量存储器管理
绝大多数现代计算机系统都采用硬盘作为主要非易失存储介质来存储程序和数据。许多程序都存储在硬盘上,要执行时才调入内存,在执行时将硬盘作为处理的来源地和目的地。因此,硬盘的适当管理对计算机系统尤为重要。
操作系统负责下列有关硬盘管理的活动:
空闲空间管理;
存储空间分配;
硬盘调度。
C、高速缓存
高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。硬件高速缓存基于著名的局部性原理,该原理既适用于程序结构也适用于数据结构。在有高速缓冲存储器的计算机系统中,中央处理器存取主存储器的地址划分为行号、列号和组内地址三个字段。于是,主存储器就在逻辑上划分为若干行;每行划分 为若干的存储单元组;每组包含几个或几十个字。高速存储器也相应地划分为行和列的存储单元组。二者的列数相同,组的大小也相同,但高速存储器的行数却比主 存储器的行数少得多。
高速缓存主要由三大部分组成:
Cache存储体:存放由主存调入的指令与数据块。
地址转换部件:建立目录表以实现主存地址到缓存地址的转换。
替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。
操作系统执行高速缓存管理,对高速缓存大小和置换策略的仔细选择可以极大提高性能。
D、I/O子系统
I/O子系统包括如下几个部分:
一个包括缓冲、高速缓存和假脱机的内存管理部分;
通用设备驱动器接口;
特定硬件设备的驱动程序。
9、保护和安全
保护是一种控制进程或用户对计算机资源的访问的机制。这个机制必须为强加控制提供一种规格说明方法和一种强制执行方法。
安全的主要工作是防止系统不受外部或内部攻击。这些攻击范围很广,包括病毒和蠕虫、拒绝服务攻击、身份偷窃、服务偷窃。
10、分布式系统
分布式系统是将一组物理上分开来的、各种可能的异构的计算机系统通过网络连接在一起,为用户提供系统所维护的各种资源的计算机的集合。
分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。
网络操作系统(Network Operating System)提供跨网络的文件共享、包括允许不同计算机上的进程进行消息交换的通信方法等功能。
11、专用系统
实时嵌入式系统
多媒体系统
手持系统
12、计算环境
传统计算
客户机-服务器计算
对等计算
基于Web的计算
拓展:计算机三级考试网络操作系统基本概念
1单机操作系统
单机操作系统包括几个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理等。
(1)操作系统的管理功能
①进程管理:所谓进程(Process)就是一个将执行的程序,它附有该进程的地址空间、相应的寄存器组以及运行程序所需要的其他信息。操作系统必须提供一种启动进程的机制。在DOS中,该机制就是EXEC函数。在Windows中启动进程的函数是CreateProcess。
②内存管理:操作系统的内存管理功能是管理内存资源,主要实现内存的分配与回收、存储保护以及内存的扩充等。
③文件系统:文件系统负责管理在硬盘和其他大容量存储设备中存储的文件,通过文件管理向用户提供创建文件、删除文件、读写文件、打开和关闭文件等功能。
DOS通过文件表FAT寻找磁盘文件; Windows通过虚拟文件表VFAT来寻找磁盘文件; OS/2通过高性能文件系统HPFS来寻找磁盘文件。一般来说,HPFS的性能要比FAT和VFAT都好。
④设备I/O操作系统的设备管理负责分配和回收外部设备,以及控制外围设备按用户程序的要求进行操作。DOS使用驱动程序来管理设备。
(2)操作系统的结构
操作系统通常有4类组件。
①驱动程序;
②内核;
③接口库;
④外围组件
2网络操作系统
网络操作系统(NOS)是指能使网络上各个计算机方便而有效地共享网络资源,为用户提供所需的各种服务的操作系统软件。
网络操作系统的基本任务是:屏蔽本地资源与网络资源的差异性,为用户提供各种基本网络服务功能,实现网络系统资源的共享管理,并提供网络系统的安全保障。
什么是Web OSWeb OS是一个运行在网页浏览器中的虚拟操作系统,更精确地说,Web OS是一个运行在网页浏览器中的应用程序集合。因此,有人把NOS称为服务器操作系统,把Web OS称为客户端操作系统。
3网络操作系统的分类
一般来说,网络操作系统可以分为两类:专用型NOS与通用型NOS。
4网络操作系统的基本功能
网络操作系统的基本功能有:文件服务、打印服务、数据库服务、通信服务、信息服务、分布式服务、网络管理服务、Internet/Intranet服务。
;
0条评论