一、环境介绍
Mysql版本:5.5.27
二、优化内容
字段 | 介绍 | 推荐值 |
---|---|---|
skip-locking | 避免MySQL的外部锁定,减少出错几率增强稳定性 | |
back_log | MySQL可能的连接数量(linux下推荐小于512) | 384 |
key_buffer_size | key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。对于内存在4GB左右的服务器该参数可设置为256M或384M。注意:该参数值设置的过大反而会是服务器整体效率降低! | 4G服务器 256M |
max_allowed_packet | 当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接 | 4M |
thread_stack | 主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存 | 192kb |
table_cache | 表高速缓存的数目 | 512 |
sort_buffer_size | n第一次需要使用这个buffer的时候,一次性分配设置的内存 | 512K |
read_buffer_size | 读查询操作所能使用的缓冲区大小 | 4M |
join_buffer_size | 联合查询操作所能使用的缓冲区大小 | 8M |
myisam_sort_buffer_size | 当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区。 | 64M |
thread_cache_size | 表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,(3G以上内存推荐为64) | 64 |
query_cache_size | 查询缓存区的最大长度 | 64M |
tmp_table_size | 如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误 | 256M |
max_connections | 最大用户连接数 最大连接数占上限连接数的85%左右 | 3000 |
max_connect_errors | 它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。max_connect_errors的值与性能并无太大关系 | 10000000 |
wait_timeout | 指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10。 | 10 |
thread_concurrency | 该参数取值为服务器逻辑CPU数量×2 | 4 |
innodb_log_file_size | 如果对 Innodb 数据表有大量的写入操作,那么选择合适的 innodb_log_file_size 值对提升MySQL性能很重要 | 256M |
innodb_log_buffer_size | 事务日志文件写操作缓存区的最大长度 | 8M |
innodb_flush_logs_at_trx_commit | 1) =1时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新。Truly ACID。速度慢。2) =2时,在每个事务提交时,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新。只有操作系统崩溃或掉电才会删除最后一秒的事务,不然不会丢失事务。3) =0时, 日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新。任何mysqld进程的崩溃会删除崩溃前最后一秒的事务 | 2 |
innodb_buffer_pool_size | innodb_buffer_pool_size 定义了 InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小 在专用数据库服务器上,可以考虑该值为物理内存大小的 60%-80% | 1G |
innodb_additional_mem_pool_size | 除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存来提升InnoDB的性能。这些内存就可以通过此参数来分配。推荐此参数至少设置为2MB | 2M |