在mysql 中输入以下命令,可自动计算本身的当前配置最大的内存消耗mysql
语句:sql
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';数据库
SHOW VARIABLES LIKE 'innodb_additional_mem_pool_size';windows
SHOW VARIABLES LIKE 'innodb_log_buffer_size';缓存
SHOW VARIABLES LIKE 'thread_stack';服务器
SET @kilo_bytes = 1024;tcp
SET @mega_bytes = @kilo_bytes * 1024;性能
SET @giga_bytes = @mega_bytes * 1024;优化
SET @innodb_buffer_pool_size = 2 * @giga_bytes;线程
SET @innodb_additional_mem_pool_size = 16 * @mega_bytes;
SET @innodb_log_buffer_size = 8 * @mega_bytes;
SET @thread_stack = 192 * @kilo_bytes;
SELECT
( @@key_buffer_size + @@query_cache_size + @@tmp_table_size
+ @innodb_buffer_pool_size + @innodb_additional_mem_pool_size
+ @innodb_log_buffer_size
+ @@max_connections * (
@@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size
+ @@join_buffer_size + @@binlog_cache_size + @thread_stack
) ) / @giga_bytes AS MAX_MEMORY_GB;
Linux环境下是my.cnf;可是windows环境下是my.ini
如下的配置是针对
针对my.cnf文件进行优化:
[mysqld]
skip-locking (取消文件系统的外部锁)
skip-name-resolve (不进行域名反解析,注意由此带来的权限/受权问题)
key_buffer_size = 256M (分配给MyISAM索引缓存的内存总数)对于内存在4GB左右的服务器该参数可设置为256M或384M。
注意:该参数值设置的过大反而会是服务器总体效率下降!
max_allowed_packet = 4M (容许最大的包大小)
thread_stack = 256K (每一个线程的大小)
table_cache = 128K (缓存可重用的线程数)
back_log = 2000 (临时中止响应新请求前在短期内能够堆起多少请求,若是你须要在短期内容许大量链接,能够增长该数值)
sort_buffer_size = 2M (分配给每一个线程中处理排序)
read_buffer_size = 2M (读取的索引缓冲区大小)
join_buffer_size = 2M (分配给每一个线程中处理扫描表链接及索引的内存)
myisam_sort_buffer_size = 64M (myisam引擎排序缓冲区的大小)
table_cache = 512 (缓存数据表的数量,避免重复打开表的开销)
thread_cache_size = 64 (缓存可重用线程数,见笑建立新线程的开销)
query_cache_size = 64M (控制分配给查询缓存的内存总量)
tmp_table_size = 256M (指定mysql缓存的内存大小)
max_connections = 768 (最大链接数)指mysql整个的最大链接数
max_connect_errors = 10000 (最大链接错误数据)
wait_timeout = 10 (超时时间,能够避免攻击)
thread_concurrency = 8 (根据cpu数量来设置)
skip-bdb 禁用没必要要的引擎
skip-networking (关闭mysql tcp/ip链接方式)
Log-slow-queries = /var/log/mysqlslowqueries.log
long_query_time = 4 (设定慢查询的时间)
skip-host-cache (提升mysql速度的)
open_files_limit = 4096 (打开文件数)
interactive_timeout = 10 (服务器在关闭它前在一个交互链接上等待行动的秒数)
max_user_connections = 500 (最大用户链接数)
key_buffer_size 默认为218 调到128最佳
query_cache_size
tmp_table_size 默认为16M 调到64-256最挂
innodb_thread_concurrency=8 你的服务器CPU有几个就设置为几,默认为8
table_cache=1024 物理内存越大,设置就越大.默认为2402,调到512-1024最佳
innodb_additional_mem_pool_size=8M 默认为2M
innodb_flush_log_at_trx_commit=0 等到innodb_log_buffer_size列队满后再统一储存,默认为1
innodb_log_buffer_size=8M 默认为1M,默认写日志缓存大小,用来设置缓存大小
read_buffer_size=4M 默认为64K
read_rnd_buffer_size 随机读 缓存区 默认为256K
sort_buffer_size=32M 默认为256K
max_connections=1024 默认为1210
thread_cache_size=120 默认为60
innodb_buffer_pool_size=360M 参数表示缓冲池字节大小,InnoDB缓存表和索引数据的内存区域。mysql默认的值是128M;建议值360M
innodb_log_file_size = 512M 写入日志文件的大小,官网文档设置为512M,相似于Oracle中redlog的做用,若是配置过小了将频繁写入影响性能
innodb_log_files_in_group = 2 指定你有几个日志组
performance_schema_max_table_instances=600 //检测的表对象的最大数目
table_definition_cache=400 //缓存在frm文件中文件数量
//能够存储在缓存中的定义的表数量。若是您使用大量的表,您能够建立一个大的表定义缓存,以加快表的打开。
//表定义缓存占用较少的空间,不使用文件描述符,不像正常表缓存。最小值和默认值都是400。
table_open_cache=256 //全部线程的开放表的数目。增长这个值增长,mysqld须要文件描述符的数量
//缓存数据文件的描述符相关信息
开启mysql慢查询的查询日志:
查询日志相关内容:
show variables like '%quer%';
参数设置:
windows下是mysql.ini文件,Linux下是mysql.cnf文件
slow_query_log=ON //将日志打开
slow_query_log_file="C:/ProgramData/MySQL/MySQL Server 5.6/data/mysql_slow.log"
//慢SQL语句保存的日志文件
long_query_time=3 //慢SQL定义的时间
开启日志记录文件:
set global slow_query_log='ON' //很重要,须要数据库管理员用户权限进行执行
对以上配置进行更改后都须要重启mysql服务才能有效