您的位置:首页 > 数据库 > MySQL

mysql 配置说明

2015-06-09 14:52 537 查看
对红薯开源的oschina mysql配置文件的说明:

[client]
password        = 
port            = 3306
socket          = /tmp/mysql.sock

#限制mysql server接收的数据包的大小(这里是客户端传入的数据包)
max_allowed_packet = 48M 

# Here follows entries for some specific programs

# The MySQL server

[mysqld]
datadir=/data/mysql
#tmpdir=/dev/shm/mysql
event_scheduler=ON  #开启定时器
default-storage-engine=INNODB #默认数据库引擎
#default-character-set=utf8
character-set-server = utf8 #默认字符集
port            = 3306
max_allowed_packet = 16M 

#从一个连接上次SQL执行后算起,当前空闲(sleep)若超过该时间(500秒),
#则会被强制断开(对一些负荷比较重的MySQL还是比较有用,回收sleep连接线程释放内存)。
wait_timeout    = 500   

#和wait_timeout配合使用,服务器在关闭连接前在一个交互连接上等待行动的秒数
interactive_timeout = 500

#指的是连接过程中握手的超时时间(基于TCP协议会有3次握手交互,
#成功后客户端会阻塞等待服务消息,
#服务端这个时候会创建一个线程(或者从线程池中取一个线程)来处理请求,
#主要验证部分包括host和用户名密码验证。
#host验证用grant命令授权用户的时候是有指定host的。
#用户名密码认证则是服务端先生成一个随机数发送给客户端,
#客户端用该随机数和密码进行多次sha1加密后发送给服务端验证。
#如果通过,整个连接握手过程完成。)
connect_timeout = 20 
socket          = /tmp/mysql.sock

#当客户端请求连接超过max_connections时,
#会将超过请求放入堆栈中(back_log)来等待资源释放,
#如果等待的请求超过了堆栈的大小,将不会授与连接资源。
back_log = 512 
max_connections = 2048 #mysql最大连接数

#mysql安全相关的计数器,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。
#max_connect_errors的值与性能并无太大关系。
max_connect_errors = 128 

#mysql用户能够打开多少个文件描述符,
#注意:open_files_limit 大小和 max_connections*5需要比较,
#那个最大就用那个值来设置open_files_limit 。
#【比较open_files_limit,max_connections*5和10+max_connections+table_cache_size*2中最大值】
#(/etc/security/limits.conf 查看系统最大文件数)
open_files_limit = 8192 

#指定用于索引的缓冲区大小,
#通过检查状态值Key_read_requests和Key_reads,可以知道 key_buffer_size 设置是否合理。
#比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好
#(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)  
key_buffer_size=1024M

#MySql执行排序使用的缓冲大小(不是越大越好,根据业务应用情况设置) 
sort_buffer_size = 32M

#MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区
read_buffer_size = 32M 

#在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。   
join_buffer_size = 32M 

#MySql的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区
read_rnd_buffer_size = 8M 

#为一次插入多条新记录的INSERT命令分配的缓存区长度(默认设置是8M)。 
bulk_insert_buffer_size = 32M 

# MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).  
# 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢) 
myisam_max_sort_file_size = 100G

# 此缓冲当MySQL需要在 REPAIR, OPTIMIZE, ALTER 
# 以及 LOAD DATA INFILE 到一个空表中引起重建索引时被分配.  
# 这在每个线程中被分配.所以在设置大值时需要小心.
myisam_sort_buffer_size=64M

#可以重新利用保存在缓存中线程的数量(重要的优化指标?)
#当断开连接时如果缓存中还有空间,
#那么客户端的线程将被放到缓存中,
#如果线程重新被请求,那么请求将从缓存中读取,
#如果缓存中是空的或者是新的请求,
#那么这个线程将被重新创建,如果有很多新的线程,
#增加这个值可以改善系统性能.
thread_cache_size = 64
#thread_concurrency = 16

# 线程使用的堆大小. 此容量的内存在每次连接时被预留.  
# MySQL 本身常不会需要超过64K的内存  
thread_stack = 512k

# 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖. 
query_cache_limit = 4M
#查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果. 
query_cache_size = 128M
query_cache_min_res_unit= 2k

#指定表高速缓存的大小。
#每当MySQL访问一个表时,如果在表缓冲区中还有空间,
#该表就被打开并放入其中,这样可以更快地访问表内容。
table_cache = 2048
#临时HEAP数据表的最大长度
tmp_table_size = 256M
max_heap_table_size = 256M
max_tmp_tables = 512 
bulk_insert_buffer_size = 16M

#禁用DNS解析(须使用ip连接,设置该参数之前先grant root%127.0.0.1的本地ip的权限)
skip-name-resolve

#慢查询日志
slow_query_log

#记录慢查询超过时间100ms的SQL(为什么要求这高?)
long_query_time = 0.1

innodb_data_home_dir = /data/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/mysql

#设置独立表空间
innodb_file_per_table = 1
innodb_open_files = 2048

#memlock
#开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。
#在非常高的 I/O 负载情况下开启,当然innodb_buffer_pool_size相对应。
innodb_buffer_pool_instances=4

#表示缓冲池字节大小,InnoDB缓存表和索引数据的内存区域。默认的值是128M
#合理设置,不是越大越好(具体测试对cpu影响)
innodb_buffer_pool_size = 8G

#除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存
innodb_additional_mem_pool_size=64M

#数据日志文件的大小,以M为单位,更大的设置可以提高性能,
#但也会增加恢复故障数据库所需的时间 
innodb_log_file_size = 64M

innodb_lock_wait_timeout = 50

#如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。
#为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。
#设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。
#设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。 
innodb_flush_log_at_trx_commit = 0
### small swap / IO
#参数控制着innodb数据文件及redo log的打开、刷写模式
innodb_flush_method = O_DIRECT
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_log_files_in_group = 3

#脏页数据超过多少%时写入磁盘
innodb_max_dirty_pages_pct = 90

[mysqldump]
quick
max_allowed_packet = 48M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set=utf8

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: