mysql 5.6 性能优化

原文:http://www.51ou.com/browse/msyql/58966.html

          http://www.cnblogs.com/littlehb/archive/2013/04/06/3001975.html

          http://www.jb51.net/article/52531.htm

          http://my.oschina.net/liting/blog/387489

http://www.jb51.net/article/50918.htm

http://zhidao.baidu.com/link?url=P8EQv_zNOq1LzuTuFDzSwDH6A9NJzm20YoBWwy4qIPWtFcEN9_Dq09h5rmFeQ57IMsku0qKo3RlfRAz0ZUQmX0OAFeeYQReMNimutbswiQ3 

 

 

配置如下:

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/var/lib/mysql/mysql.sock

port=3306

server_id=1

#innodb

user=mysql

#设定InnoDB缓存表数据和索引的内存缓冲区大小,一般设置为内存的50%左右

innodb_buffer_pool_size=6G

#默认值为 48M. 有很高写入吞吐量

innodb_log_file_size=2G

#InnoDB 存储引擎的事务日志所使用的缓冲区

innodb_log_buffer_size = 8M

#参数对于InnoDB存储引擎写入操作的性能

innodb_flush_log_at_trx_commit=2

#修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间

innodb_file_per_table=1

#限制Innodb能打开的表的数据

innodb_file_io_threads=4

#如果使用硬件RAID磁盘控制器, 需要设置为 O_DIRECT

innodb_flush_method=O_DIRECT

#设置会影响InnoDB每秒在后台执行多少操作

innodb_io_capacity=2000

innodb_io_capacity_max=6000

#这个参数必须要和innodb_io_capacity设置一样

innodb_lru_scan_depth=2000

#限制了一次有多少线程能进入内核,0表示不限制进入内核的数量,可以跟thread_concurrency一样

innodb_thread_concurrency = 8

#除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存来提升InnoDB的性能,这些内存就可以通过此参数来分配

innodb_additional_mem_pool_size=16M

#修改为基于行的复制

innodb_autoinc_lock_mode = 2

# Binary log/replication

#二进制日志

log-bin=mysql-bin

#为了在最大程序上保证复制的InnoDB事务持久性和一致性

sync_binlog=1

sync_relay_log=1

#启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能

relay-log-info-repository=TABLE

master-info-repository=TABLE

#设置保存日志时间(单位为:天)

expire_logs_days=7

#行复制或混合复制值为(mixed) 

binlog_format=ROW      

#mysql数据库事务隔离级别有四种(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ,SERIALIZABLE)

transaction-isolation=READ-COMMITTED

#log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,

#但是,如果这个从服务器B是服务器A的从服务器,同时还作为服务器C的主服务器,那么就需要开发这个选#项,这样它的从服务器C才能获得它的二进制日志进行同步操作

log-slave-updates=1

#禁止MySql对外部连接进行DNS解析,使用这一选项可以消除MySQL进行NDS解析的时间。但需要注意的是:如果开启该选项,则所有远程主机连

#接授权都要使用IP地址方式了,否则MYSQL将无法正常处理连接请求。

skip-name-resolve

#所有表明自动转换为小写

lower_case_table_names=1

#这个跳过1062  主键重复错误

slave-skip-errors=1062

#cache

#内部内存临时表的最大值

tmp_table_size=512M

#设置字符编码相关,

character-set-server=utf8

collation-server=utf8_general_ci

#如果是要支持ios、android等移动设备的特殊表情则需要设置另外的编码如下:

character-set-server=utf8mb4

collation-server=utf8mb4_general_ci

#即跳过外部锁定

skip-external-locking

#MySQL能暂存的连接数量(根据实际设置)短时间内的多少个请求可以被存在对堆栈中,

#如果系统短时间内有很多连接,则需>要增大该参数的值,

#该参数值指定到来的TCP/IP连接的监听队列的大小。

#不同的操作系统在这个队列的大小有自己的限制,

#如果试图将back_log设定得高于操作系统的限制将是无效的,

#其默认值为50,对于LINUX系统而言,推荐设置为小于512的整数。

back_log=384

#指定索引缓冲区的大小,只对MyISAM表起作用,这里写上也没有关系

key_buffer_size=1024M

#这条指令限定用于每个数据库线程的栈大小

thread_stack=256k

#当一个查询不断地扫描某一个表,MySQL会为它分配一段内存缓冲区

read_buffer_size=8M

#线程缓存

thread_cache_size=64

#查询缓存大小

query_cache_size=128M

#内部内存临时表的最大值,每个线程都要分配

max_heap_table_size=256M

#将查询结果放入查询缓存中

query_cache_type=1

#代表在事务过程中容纳二进制日志SQL语句的缓存大小

binlog_cache_size = 2M

#同样是缓存表大小

table_open_cache=128

#缓存线程

thread_cache=1024

#推荐设置为服务器 CPU核数的2倍

thread_concurrency=8

#指定一个请求的最大连接时间,对于4GB左右内在的服务器来说,可以将其设置为5-10

wait_timeout=25

#表和表联接的缓冲区的大小

join_buffer_size = 1024M

#是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存

sort_buffer_size=8M

#随机读取数据缓冲区使用内存

read_rnd_buffer_size = 8M

 #这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句

slow_query_log = 1

#当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。

long_query_time = 1

#这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。

log_queries_not_using_indexes = 1

#记录慢查询日志的文件名

slow_query_log_file=/data/mysql/log/slow-query.log

#connect

#是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码

max-connect-errors=20000

#连接数

max-connections=5000

#开启查询缓存

explicit_defaults_for_timestamp=true

#mysql服务器能够工作在不同的模式下,并能针对不同的客户端以不同的方式应用这些模式

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

猜你喜欢

转载自yjph83.iteye.com/blog/2251809