MySQL 5.6 和 5.7 默认启动时占用内存高达400多兆,对于小型内存应用而言,这样的内存占用率明显偏高,可能导致系统崩溃。为了解决这一问题,我们可以通过编辑 `/etc/my.cnf` 文件,在 `[mysqld]` 下调整或修改以下参数以优化内存使用。具体调整如下:1. `performance_schema_max_table_instances = ...
mysql 5.6与5.7内存参数优化内存占用为30MB左右
MySQL 5.6 和 5.7 默认启动时占用内存高达400多兆,对于小型内存应用而言,这样的内存占用率明显偏高,可能导致系统崩溃。为了解决这一问题,我们可以通过编辑 `/etc/my.cnf` 文件,在 `[mysqld]` 下调整或修改以下参数以优化内存使用。
具体调整如下:
1. `performance_schema_max_table_instances = 200`
2. `table_definition_cache = 100`
3. `table_open_cache = 100`
调整这三个参数的值,可以显著降低内存占用,将 MySQL 使用的内存减少到约60兆左右,大大降低了默认内存使用量。
进一步的调整包括:
1. `innodb_buffer_pool_size = 2M`
2. 禁用 `performance_schema` 功能(默认启用,占用大量内存)
在完成上述调整后,MySQL 的内存使用量大约降至22兆。以下是完整的配置文件示例,适用于 CentOS 6 64位系统,使用 yum 安装的环境:
通过 ssh 登录服务器或 VPS,编辑 `/etc/my.cnf` 文件,执行以下配置:
`# For advice on how to change settings please see`
`dev.mysql.com/doc/refman/`
`[mysqld]`
`# innodb_buffer_pool_size = 128M`
`# log_bin`
`#`
`# join_buffer_size = 128M`
`# sort_buffer_size = 2M`
`# read_rnd_buffer_size = 2M`
`datadir=/var/lib/mysql`
`socket=/var/lib/mysql/mysql.sock`
`#symbolic-links=0`
`skip-external-locking`
`key_buffer_size = 8M`
`max_allowed_packet = 1M`
`table_open_cache = 4`
`sort_buffer_size = 64K`
`read_buffer_size = 256K`
`read_rnd_buffer_size = 256K`
`net_buffer_length = 2K`
`thread_stack = 240K`
`innodb_buffer_pool_size=2M`
`performance_schema_max_table_instances=50`
`table_definition_cache=50`
`table_open_cache=32`
`max_connections=50`
`max_user_connections=35`
`wait_timeout=10`
`interactive_timeout=15`
`long_query_time=5`
`symbolic-links=0`
`sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES`
`[mysqld_safe]`
`log-error=/var/log/mysqld.log`
`pid-file=/var/run/mysqld/mysqld.pid`
以上配置文件中包含了多个参数调整,旨在降低内存占用,提高性能和稳定性。在实际应用中,根据服务器资源和业务需求进行微调,以达到最佳的性能和资源利用。2024-10-22