MYSQL 8 已经上线一段时间了,每个数据库系统的内存方面都有自己的特点,MYSQL的内存的特点,下面总结了一些同学们经常会问的一些内存方面的问题.
1 为什么MYSQL 内存在使用完后并不释放
这点需要从LINUX系统的 malloc()内存分配函数来说起, LINUX 将内存分配给MYSQL 通过 malloc() 函数, 而malloc() 函数是不会将内存在进行FREE 的回收的,所以说MYSQL 使用内存后不release 是不对的,这是LINUX 的问题.当然好处是这样调用后,再有其他使用内存的情况下,调用的速度会很快.
2 如果我经常遇到 LINUX 由于MEMORY RUN OUT 导致 MYSQL 经常被KILL 在 restart的问题,我怎么办?
这个问题这里分为三个层次
1 innodb buffer pool size 分配的不合理, 具体innodb buffer pool size 应该配置成多少 是内存的 60% 还是 80% 这就的看第二个问题
2 你到底有多少连接在并发,并且这些连接使用的内存大概是多少, 你的机器上是否是单一的MYSQL 数据库服务器还是,混杂了其他的应用服务,他们占用的内存是多少.