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

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

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 等。

楼主你好

个人观点

我也不是很明白

相互交流一下

(暂时不讨论系统识别问题)

总数就是

系统所响应或者是识别到的物理内

已缓存

则是计算机为了处理程序而调用的内存(当让也包括某些软件要求的虚拟内存)

可用

则是表示再开启其他程序可以调用的总内存

那么空闲则是指在当前电脑工作效率下

还不能去调用的内存(不是代表不能识别)

举个例子

就好比一个人

要吃一饼子

这个饼子被分为3个部分

假设一个人的食量是10

现在他已经吃了04个

准备吃另外04个

至于他不准备吃另外的02个或许是因为吃个八分包吧

那么我个人认为处理器和系统也应该是在一个普通状态下的工作

你可以看一下

配置低的处理器

在一般工作时

空闲量是非常大的

希望可以帮到楼主

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

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

或者

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

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

http://blogcsdnnet/yjg428/article/details/7030353

http://wenkubaiducom/linkurl=IPyL4oW-S1BT-XBwruSsGr8S1gpLXiqRJjEPX8Pkz2S2h2tenMnQWdAyrTLQwSqOf641gGIZmjNmflrEr7-3C826P7QtMDnbduQlBuQInTO

内存是影响Microsoft SQL Server系统性能的一个重要因素,SQL Server数据库安装时将为具有32MB物理内存的机器缺省配置16MB可用内存,16MB物理内存的机器缺省配置4MB可用内存。应在Microsoft SQL Server数据库安装后进行内存选项(Memory)设置,配置值为2GB。

 为了确定SQL Server系统最适宜的内存需求,可以从总的物理内存中减去Windows NT40需要的内存以及其它一些内存需求后综合确定,理想的情况是给SQL Server分配尽可能多的内存,而不产生页面调度。

 1、根据物理内存合理规划SQL Server可用内存

 在大多数的生产环境中,服务器配备的物理内存是64MB~128MB,偶尔也有256MB的,只要配置恰当是完全可以满足SQL Server的内存需求的。下表是笔者关于SQL Server内存分配的建议规划,供参考。

 物理内存 分配给SQL Server 设置值(单位:2KB)

 8MB 4MB 2048

 16MB 8MB 4096

 32MB 16~18MB 8192~9216

 48MB 28~34MB 14336~17408

 64MB 40~46MB 20480~23552

 128MB 100~108MB 51200~55296

 256MB 216~226MB 110592~115712

 512MB 464~472MB 237568~241664

 以下是SQL Server内存选项(Memory)设置方法

 (1)从Microsoft SQL Server程序集中启动SQL Enterprise Manager;

 (2)从Server Manager窗口中选择“Server”菜单选项;

 (3)在“Server”菜单中选择“Configurations”选项;

 (4)在“Server Configuration”对话框中选择”Configuration”标签,Configuration窗口显示配置选项列表;

 (5)选中“Memory”项目,在“Current”栏填入新值;

 (6)停止并重新启动SQLServer服务,使设置生效。

 2、合理扩充虚拟内存、增大SQL Server可用内存

 当SQL Server系统确实需要扩大可用内存时,应在磁盘空间充足的情况下扩充供虚拟内存,并相应增大 SQL Server可用内存。具体做法是,系统管理员首先扩充服务器的虚拟内存,然后再参考上表增大SQL Server可用内存,关键是要根据系统的负载情况综合决定是否扩充内存、优化配置。

 3、使用tempinRAM

 SQL Server使用tempdb临时数据库作为一些查询连接操作时排序或创建临时表的工作空间。将tempdb创建在RAM中可以使系统操作性能有较大提高,而且因为tempdb在每次重启动服务器时都重建,这样即使有非正常的关闭也是较为安全的,例如停电故障。要将tempdb创建在RAM中,可以使用sp_configure进行设置,具体用法请参阅有关资料。

 由于tempdbinRAM使用的内存是由系统从内存体单独分配的,与SQL Server的内存选项设置的可用内存池是分开的,使用tempdbin RAM将减少整个系统的可用内存,应根据SQL Server和服务器运行情况进行配置,否则就可能适得其反,影响系统性能。另外,适当增加tempdb数据库空间,即使不使用tempdbin RAM,也可以提高数据库的运行速度。

 4、注意事项

 (1)建议在生产环境中SQL Server不要设置小于32MB内存,而且数据库服务器上尽量不要运行其它应用程序;

 (2)扩充供虚拟内存、增大SQL Server可用内存,应考虑物理内存使用状况和磁盘空间许可情况;

 (3)在可能的情况下,要为系统留有部分额外的内存,这样在服务器上打开一个服务或添加一个进程且不改变SQL Server内存配置时,不致于使NT服务器的运行速度受到影响(变得很慢),一般认为最小为2MB为20MB。

 5、巧用内存配置,解决统计服务器问题

 一单位的统计服务器投入使用后,运行速度较慢,经排查原因,发现SQLServer中的内存选项(Memory)仅为安装缺省值——16MB(而服务器有128MB的物理内存),在将内存值调整为100MB时却误将其改成了 1000MB,使得SQL Server服务不能启动,统计数据库打不开,也就不能再次进入SQL Enterprise Manager修改内存设置了。由于近期未备份业务数据,不到万不得已不能重装SQLServer数据库,就试图用命令行参数命令来重新启动SQL Server服务,但均不能奏效,陷入了困境。我们经过仔细分析提出:既然SQL Server可用内存设置值远远大于物理内存,造成SQLServer服务不能启动,何不扩充虚拟内存呢经设法将机器虚拟内存扩充至1000MB并重新启动,SQL Server数据库成功启动,问题迎刃而解。

 6、结束语

 目前,大多数单位投入使用的Microsoft SQL Server数据库服务器的物理内存一般都在64MB以上,如农业银行省、市分行的统计服务器配备128MB物理内存,只要按照上面提出的方法合理规划、优化NT和SQL Server的内存配置,使设置尽可能达到,应用系统就一定能够充分发挥设计功能、满足业务需求。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Linux 里面怎么让系统分配更多的内存给mysql用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情