服务器怎么分配更多内存给sql(怎么给应用分配更多的内存)

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

在安装有SQLServer数据库的计算机上,我们在使用数据库的过程中,有时候会在任务管理器里发现sqlservr.exe这个进程的内存和CPU占用率较高。 接下来我们来看一下,如何解决上面这个问题,需要设置SQLServer数据库的内存配置。登录数据库,这里使用的是SQLServer2008,右键点击最上方的服务器名,在弹出的菜单中,点击【属性】 打开服务器属性窗口。默认显示的是第一项【常规】内容,点击第二项【内存】进行内存配置。 点击【内存】后,打开服务器内存选项配置界面。这里的【使用AWE分配内存】可以对内存进行扩展支持,我们要做的是更改下方的最大服务器内存。这个数值根据自己服务器内存大小来做适当设置。 个人建议设置本机内存的一半或稍微高一点,如机器内存为2G,那么我们这里填写1000。需要注意的是内存设置调小以后,在数据库执行较复杂SQL语句的时候,可能会比较慢,出现这种情况,我们再适当上调最大内存配置大小。

如何手动设置SQL server的最大内存占用

如何手动设置SQL server的最大内存占用

sql server默认是无限制占用内存的,SQL Server 根据服务器的活动来增大或收缩缓冲区高速缓存,以使可用物理内存保持在 4 MB 到 10 MB 之间。

手动设置 SQL Server 内存选项有两种主要方法:

第一种方法,将 min server memory 和 max server memory 设置为同一值。此值与达到该值后分配给 SQL Server 缓冲池的固定内存量相对应。

第二种方法,将 min server memory 和 max server memory 设置成一个内存范围。这种方法在系统或数据库管理员希望配置 SQL Server 实例,同时又要考虑在同一台计算机上运行的其他应用程序的内存需求时很有用。

SQL服务器内存怎么动态分配

SQL服务器内存有两种基本管理方法:动态分配和静态分配

控制程序可使用的内存数量。动态分配允许管理员声明一块内存的大小;考虑到它的实际使用,SQL服务器可以分配给其需要占用的内存的最大值,并且(理论上)在没有使用内存的情况下将其释放。静态分配则是创建一块固定的内存空间,提供给SQL Server使用——不再进行分配。

在默认情况下,SQL Server被设置成动态分配,分配给其正在运行的计算机内所有可用的物理内存。许多管理员注意到SQL Server内存随时间的流逝被逐渐消耗殆尽时,其原因很可能是故障或是内存漏洞,但这个程序正是被设计成这样的。SQL Server就是要在任何可能的情况下在电脑中运行,并因此为达到其最佳性能而使用所有可用的内存。如果SQL Server在独立的机器中运行,那么就让它分配和释放其需要的内存吧。

在一个小型商业服务器机器中,SQL可能与其他程序,如IIS,同时运行,管理员或许尝试着进行设置,使SQL Server运行在一块固定大小的内存,目的是控制其不会占用用于共享的内存。但这并不一定能如愿以偿。一方面,将内存的最高限度设置得太低,并且没有分配给SQL服务器足够的可用内存来用作类似事务日志或查询执行的缓存,所有这些都很难办到。使SQL服务器得到执行操作所需内存的惟一方法就是换出其他的页面,这是个缓慢的过程。

有许多方法可以计算出最好的内存分配。如果你有可预知的用户负载,依照用户所需的最大数目分配给他们。微软推荐至少用4 MB用作动态的最大空间,这已经成为一个可能的规则。如果你的用户负载变化范围很大——如以下情况,当你通过IIS 的前端连接到公共的因特网来支持你的数据库服务的时候——实时的统计数据将会比仅凭猜测所作的工作帮助更大。在高峰期,把SQL Server的高速缓存命中率和每秒缺页率等性能数字搜集起来。如果这些数据表明SQL Server正在做大量的交换,那么增加最大内存空间直到交换逐渐减少。每秒一次或更多次的交换是有坏处的。

另一种选择是使“为SQL Server预留物理内存”的选项可用,这可以防止SQL Server把已经分配给它的内存换出,即使当其他应用程序能够使用它时。这可以叫做是一把双刃剑:它既可以相当大程度的提高性能,也可能带来更大的性能损害。在有许多RAM 可以共享的(1 GB 或更多)的系统中,这是值得一试的,但是当有其他关键的进程可能突然需要大量的内存时,这种办法是不应该使用的。(并且如果需要的话,SQL Server可能会被迫放弃一些它自己的内存)。如果SQL Server是在独立的机器上运行,用这种办法最佳化性能则是值得的。

在32位操作系统上,如何为SQL Server分配大于2GB的内存?

/3GB默认情况下,32位的操作系统只能直接分配4GB的内存,其中2GB内存空间是系统预留了供自己使用的。所以,最多只剩下2GB 的VAS(虚拟地址空间)给所有的应用程序,比如SQL Server。你可以启用系统启动文件Boot.ini上的/3GB标记增加内存,使应用程序可利用的内存达到3GB。需要注意的是,VAS仅仅是所有可供使用的地址集,不是物理内存。

PAE (物理地址扩展)

PAE是IA32处理器新增的功能,用于分配大于4GB的物理内存。可以通过开启系统启动文件boot.ini上的/PAE开关启用PAE。

AWE (址窗口化扩展控件)

AWE可以在32位操作系统上扩展应用程序的执行能力。它允许应用程序访问超出已配置的最大虚拟内存地址空间的可用物理内存。SQL Server 2005的优势是它支持AWE内存映射这种动态分配方式。如果SQL Server只需要很少的资源,它会通过AWE将多余部分内存返还给操作系统供其他的进程或应用程序使用。另外,AWE被支持的动态映射物理内存只能小于已配置的最大虚拟内存地址空间。而在64位系统上有启用AWE配置选项,但是它的配置是被忽略不计的。

注意

1. 启用PAE是目的是让AWE内存访问量大于4GB。如果/PAW的开关没有开启,当内存超过4GB的时候,AWE无法再预置内存。

2. 当/3GB开关与/PAE开关同时启用,操作系统不能使用超过16GB的内存。这是由于考虑到内核虚拟内存空间。如果系统重启的时候在boot.ini文件中开启/3GB开关,而系统又有大于16GB的物理内存,额外的内存并没有被操作系统使用。不开启/3GB开关重启系统将使用所有的物理内存。

详细信息你可以参考下面的文章配置SQL Server 使用大于2GB的物理内存。参考:

Linux 里面怎么让系统分配更多的内存给mysql用

Linux 进程通过 C 标准库中的内存分配函数 malloc 向系统申请内存,但是到真正与内核交互之间,其实还隔了一层,即内存分配管理器(memory allocator)。常见的内存分配器包括:ptmalloc(Glibc)、tcmalloc(Google)、jemalloc(FreeBSD)。MySQL 默认使用的是 glibc 的 ptmalloc 作为内存分配器。

内存分配器采用的是内存池的管理方式,处在用户程序层和内核层之间,它响应用户的分配请求,向操作系统申请内存,然后将其返回给用户程序。

为了保持高效的分配,分配器通常会预先向操作系统申请一块内存,当用户程序申请和释放内存的时候,分配器会将这些内存管理起来,并通过一些算法策略来判断是否将其返回给操作系统。这样做的最大好处就是可以避免用户程序频繁的调用系统来进行内存分配,使用户程序在内存使用上更加高效快捷。

关于 ptmalloc 的内存分配原理,个人也不是非常了解,这里就不班门弄斧了,有兴趣的同学可以去看下华庭的《glibc 内存管理 ptmalloc 源代码分析》。

关于如何选择这三种内存分配器,网上资料大多都是推荐摒弃 glibc 原生的 ptmalloc,而改用 jemalloc 或者 tcmalloc 作为默认分配器。因为 ptmalloc 的主要问题其实是内存浪费、内存碎片、以及加锁导致的性能问题,而 jemalloc 与 tcmalloc 对于内存碎片、多线程处理优化的更好。

目前 jemalloc 应用于 Firefox、FaceBook 等,并且是 MariaDB、Redis、Tengine 默认推荐的内存分配器,而 tcmalloc 则应用于 WebKit、Chrome 等。

sql server2008r2 内存分配

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

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

或者

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

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

未经允许不得转载:便宜VPS网 » 服务器怎么分配更多内存给sql(怎么给应用分配更多的内存)