mysql - MySQL最大内存使用量

标签 mysql memory ram

我想知道如何在Linux服务器上设置MySQL使用的内存量上限。

现在,MySQL将继续使用每个请求的新查询来占用内存,以便最终耗尽内存。有没有办法设置一个限制,使得MySQL使用的限制不超过该数量?

最佳答案

MySQL的最大内存使用量在很大程度上取决于硬件,您的设置和数据库本身。

硬件

硬件是显而易见的部分。越多的内存越多,磁盘越快。但是不要相信那些每月或每周的新闻信。 MySQL不能线性扩展-甚至不能在Oracle硬件上扩展。比这要复杂一些。

最重要的是:对于MySQL设置的建议,没有一般的经验法则。这完全取决于当前的使用情况或预测。

设置和数据库

MySQL提供了无数的变量和开关来优化其行为。如果遇到问题,您确实需要坐下来阅读(f'ing)手册。

至于数据库-一些重要的限制:


表引擎(InnoDBMyISAM,...)
尺寸
指标
用法


关于stackoverflow的大多数MySQL技巧都会告诉您约5-8个所谓的重要设置。首先,并不是所有人都很重要-例如为InnoDB分配大量资源而不使用InnoDB并没有多大意义,因为这些资源被浪费了。

或者-很多人建议增加max_connection变量-好吧,他们几乎不知道这还意味着MySQL将分配更多资源来满足那些max_connections-如果需要的话。更为明显的解决方案可能是关闭DBAL中的数据库连接或降低wait_timeout释放那些线程。

如果您不知所措-确实有很多东西可以阅读和学习。

引擎

表引擎是一个非常重要的决定,许多人很早就忘记了这些引擎,然后突然发现自己与30 GB大小的MyISAM表进行争斗,该表锁定并阻止了整个应用程序。

我并不是说说MyISAM很烂,但是InnoDB可以被调整为几乎或几乎与MyISAM一样快,并提供诸如UPDATE上的行锁定之类的功能,而MyISAM则在锁定整个表时将其锁定被写入。

如果您有自由在自己的基础架构上运行MySQL,您可能还想查看percona server,因为在包括Facebook和Google这样的公司(他们知道得很快)的大量贡献中,它还包括Percona自己的drop -in替代InnoDB,称为XtraDB

有关Percona服务器(和-client)设置(在Ubuntu上),请参见我的要旨:http://gist.github.com/637669

尺寸

数据库的大小非常非常重要-信不信由你,Intarweb上的大多数人从未处理过很大的工作,也不编写密集的MySQL设置,但确实存在。某些人会说出类似“使用PostgreSQL !!! 111”这样的说法,但是现在让我们忽略它们。

底线是:从大小上判断,将决定硬件。您无法真正使80 GB数据库在1
GB的RAM。

指标

不是:更多,更好。仅需要设置索引,并且必须使用EXPLAIN检查使用情况。另外,MySQL的EXPLAIN确实很有限,但这只是一个开始。

建议配置

关于这些my-large.cnfmy-medium.cnf文件-我什至不知道这些文件是为谁编写的。自己动手。

调音底漆

tuning primer是一个很好的开始。这是一个bash脚本(提示:您将需要linux),它使用SHOW VARIABLESSHOW STATUS的输出并将其包装为希望有用的建议。如果您的服务器已经运行了一段时间,则建议会更好,因为将有数据作为基础。

调音入门不是魔术酱。您仍然应该阅读所有建议更改的变量。

阅读

我真的很想推荐mysqlperformanceblog。对于各种与MySQL相关的技巧,这是一个很好的资源。而且不仅是MySQL,他们还对正确的硬件有很多了解,或者对AWS推荐安装等。这些人有多年的经验。

当然,另一个很棒的资源是planet-mysql

关于mysql - MySQL最大内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39296391/

相关文章:

c - 主存中的操作系统内核和进程

mysql - 检查mysql字段数据中的某个字符,并用另一个字符替换它

Java - 如何检查用户名是否已存在于 MySQL 表中

python - 安全地覆盖 RAM 中的 Python 变量?

c++ - 如果知道变量地址,如何在 C++ 中检索变量值

android-studio - Android Studio显示RAM的使用

javascript - 通过 javascript 提交表单

java - SessionFactory opensession 抛出空指针异常

java如何正确地将主数组传递给类构造函数?

r - 如何在 R 中获取系统(Windows)内存?