我想知道如何在Linux服务器上设置MySQL使用的内存量上限。
现在,MySQL将继续使用每个请求的新查询占用内存,以便最终耗尽内存。有没有办法设置一个限制,使MySQL使用的限制不超过该数量?
MySQL的最大内存使用量在很大程度上取决于硬件,您的设置和数据库本身。
硬件 硬件是显而易见的部分。RAM越多越好,磁盘ftw越快。但是不要相信那些每月或每周的新闻信。MySQL无法线性扩展-甚至在Oracle硬件上也无法扩展。比这要复杂一些。
底线是:有经验的,什么是推荐不一般的规则你的MySQL安装。这完全取决于当前的使用情况或预测。
设置和数据库 MySQL提供了无数的变量和开关来优化其行为。如果遇到问题,您确实需要坐下来阅读(f'ing)手册。
至于数据库-一些重要的限制:
台发动机(InnoDB,MyISAM,...) 尺寸 指标 用法 关于stackoverflow的大多数MySQL技巧都会告诉您约5-8个所谓的重要设置。首先,并不是所有因素都很重要-例如,将大量资源分配给InnoDB而不使用InnoDB并没有多大意义,因为这些资源被浪费了。
或者-很多人建议增加该max_connection变量-好吧,他们几乎不知道这也意味着MySQL将分配更多资源来满足这些需求max_connections-如果需要的话。更明显的解决方案可能是关闭DBAL中的数据库连接或降低wait_timeout释放这些线程。
如果您不知所措-确实有很多东西可以阅读和学习。
引擎 表引擎是一个非常重要的决定,许多人很早就忘记了这些引擎,然后突然发现自己与30 GB大小的MyISAM表竞争,该表锁定并阻止了整个应用程序。
我并不是说MyISAM很烂,但是InnoDB可以调整它的响应速度,使其几乎或几乎一样快,MyISAM并提供诸如行锁定的功能,UPDATE而MyISAM在写入表时锁定整个表。
如果您有自由在自己的基础架构上运行MySQL,您可能还需要检出percona服务器,因为其中包括来自Facebook和Google(他们很快知道)等公司的大量贡献,其中还包括Percona自己的drop-在更换InnoDB,叫XtraDB。
有关Percona服务器(和-client)设置(在Ubuntu上),请参见我的要旨:http ://gist.github.com/637669
尺寸 数据库的大小非常非常重要-信不信由你,Intarweb上的大多数人从未处理过很大的工作,也不编写密集的MySQL设置,但确实存在。某些人会说出类似“使用PostgreSQL !!! 111”这样的说法,但是现在让我们忽略它们。
底线是:从大小上判断,将决定硬件。您无法真正使80 GB的数据库在1 GB的RAM上快速运行。
指标 不是:更多,更好。仅需要设置索引,并且必须使用来检查其用法EXPLAIN。另外,MySQL的EXPLAIN功能确实有限,但这只是一个开始。
建议配置 关于这些my-large.cnf和my-medium.cnf文件-我甚至不知道谁是那些书面。自己动手。
调音底漆 调优入门是一个很好的开始。这是一个bash脚本(提示:你需要的Linux),这需要的输出SHOW VARIABLES,并SHOW STATUS和它包装成希望有用的建议。如果您的服务器已经运行了一段时间,则推荐会更好,因为将有数据作为基础。
调音入门不是魔术酱。您仍然应该阅读所有建议更改的变量。
阅读 我真的很喜欢推荐mysqlperformanceblog。对于各种与MySQL相关的技巧,这是一个很好的资源。而且不仅是MySQL,他们还对正确的硬件或对AWS的推荐设置等了解很多。这些人有着多年的经验。
当然,另一个很棒的资源是planet-mysql。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。