mysql 5.6、5.7默认启动占用内存400多M,如果是vps等小内存应用,mysql内存占用率明显偏高,将会导致崩溃,mysql会自动停止。
编辑/etc/my.cnf文件在[mysqld]下增加或修改如下参数
performance_schema_max_table_instances = 200table_definition_cache = 100table_open_cache = 100。
这个三个参数,调低值后内存能明显减小,现在mysql使用内存约60MB左右,就大大降低默认使用的内存。
进一步调整参数
innodb_buffer_pool_size=2M
这个三个参数可以调小。 再进一步调整: mysql 5.6默认启用performance_schema,占用很多内存,可以禁用。
完整配置文件如下,内存占用到22M
我的mysql配置如下,如果你使用的centos6 64位,并且是yum安装的(一键脚本)可以自己按照如下照抄,我的是centos6 64位系统
先ssh登录服务器或VPS,在vi /etc/my.cnf
# For advice on how to change settings please see# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html[mysqld]## Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M## Remove leading # to turn on a very important data integrity option: logging# changes to the binary log between backups.# log_bin## Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2Mdatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock#symbolic-links=0skip-external-lockingkey_buffer_size = 8Mmax_allowed_packet = 1Mtable_open_cache = 4sort_buffer_size = 64Kread_buffer_size = 256Kread_rnd_buffer_size = 256Knet_buffer_length = 2Kthread_stack = 240K#innodb_use_native_aio = 0innodb_buffer_pool_size=2Mperformance_schema_max_table_instances=50table_definition_cache=50table_open_cache=32max_connections=50max_user_connections=35wait_timeout=10interactive_timeout=15long_query_time=5# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Recommended in standard MySQL setupsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
默认值如下:
performance_schema_max_table_instances 12500table_definition_cache 1400table_open_cache 2000