[root@db02 support-files]# egrep -v "#|^$" my-innodb-heavy-4G.cnf
[client] #客户端模块
port = 3306 #mysql客户端默认监听(listen on)的TCP/IP端口
socket = /application/mysql-5.5.32/tmp/mysql.sock #为MySQL客户程序与服务器之间的本地通信指定一个套接字文件的路径
[mysqld] #服务端模块
port = 3306 #mysql服务端默认监听(listen on)的TCP/IP端口
socket = /application/mysql-5.5.32/tmp/mysql.sock #为MySQL客户程序与服务器之间的本地通信指定一个套接字文件的路径
back_log = 50 # 指定MySQL可能的连接数量 back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。
#如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。
#试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
max_connections = 100 #MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。超过限制后会报 Too many connections 错误,允许的最大连接数16384
max_connect_errors = 10 #可以允许多少个错误连接
table_open_cache = 2048 #高速缓存的大小.table_cache的值在2G内存以下的机器中的值默认时256到 512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对 SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。
max_allowed_packet = 16M #服务器和客户端之间最大能发送的可能信息包
binlog_cache_size = 1M #为binary log指定在查询请求处理过程中SQL 查询语句使用的缓存大小
max_heap_table_size = 64M #HEAP数据表(内存表)的最大长度(默认设置是16M)
read_buffer_size = 2M #读查询操作所能使用的缓冲区大小,该参数对应的分配内存也是每连接独享.
read_rnd_buffer_size = 16M #针对按某种特定顺序(如ORDER BY子句)输出的查询结果(默认256K) 加速排序操作后的读数据,提高读分类行的速度。
sort_buffer_size = 8M # 每个需要进行排序的线程分配该大小的一个缓冲区
join_buffer_size = 8M
thread_cache_size = 8 缓存可重用的线程数
thread_concurrency = 8 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
query_cache_size = 64M 指定MySQL查询结果缓冲区的大小
query_cache_limit = 2M 单个查询能够使用的缓冲区大小.缺省为1M
ft_min_word_len = 4
default-storage-engine = MYISAM
thread_stack = 192K
transaction_isolation = REPEATABLE-READ 设置所有连接的默认事务隔离级
tmp_table_size = 64M 临时HEAP数据表的最大长度
log-bin=mysql-bin #二进制LOG,mysqlbinlog直接读取二进制日志文件。二进制日志包含所有更新数据的语句 ,其目的是在恢复数据库时用它来把数据尽可能恢复到最后的状态。另外,如果做同步复制( Replication )的话,也需要使用二进制日志传送修改情况。log_bin指定日志文件,如果不提供文件名,MySQL将自己产生缺省文件名。MySQL会在文件名后面自动添加数字索引,每次启动服务时,都会重新生成一个新的二进制文件。
binlog_format=mixed
slow_query_log
long_query_time = 2
server-id = 1
key_buffer_size = 32M 索引缓冲区的大小,严格说是它决定了数据库索引处理的速度,尤其 是索引读的速度
bulk_insert_buffer_size = 64M 指定 MyISAM 类型数据表表使用特殊的树形结构的缓存
myisam_sort_buffer_size = 128M myisam引擎的sort_buffer_size
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover 自动检查和修复无法正确关闭MyISAM表
innodb_additional_mem_pool_size = 16M InnoDB用来存储数据字典和其他内部数据结构的内存池大小。
innodb_buffer_pool_size = 2G 指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8 IO操作(硬盘写操作)的最大线程个数(默认设置是4)
innodb_read_io_threads = 8
innodb_thread_concurrency = 16 InnoDB驱动程序能够同时使用的最大线程个数(默认设置是8)。
innodb_flush_log_at_trx_commit = 1 InnoDB记录日志的方式
如果设置为1,则每个事务提交的时候,MySQL都会将事务日志写入磁盘。
如果设置为0或者2,则大概每秒中将日志写入磁盘一次。
实际测试发现,该值对插入数据的速度影响非常大
设置为2时插入10000条记录只需要2秒,设置为0时只需要1秒,而设置为1时则需要229秒。
建议尽量将插入操作合并成一个事务,这样可以大幅提高速度。
在存在丢失最近部分事务的危险的前提下,可以把该值设为0。
innodb_log_buffer_size = 8M 日志缓存的大小
默认的设置在中等强度写入负载以及较短事务的情况下,一般可以满足服务器的性能要求。
如果更新操作峰值或者负载较大就应该加大这个值。8-16M即可。
innodb_log_file_size = 256M 日志组中每个日志文件的大小在高写入负载尤其是大数据集的情况下很重要。
这个值越大性能就越高,但恢复时时间会加长。默认是5M。Javaeye推荐innodb_log_file_size = 64M
innodb_log_files_in_group = 3 日志组中的日志文件数目,推荐使用3
innodb_max_dirty_pages_pct = 90 最大脏页的百分数
innodb_lock_wait_timeout = 120 事务获得资源超时设置,默认50s
[mysqldump]
quick
max_allowed_packet = 16M 最大能发送的可能包大小
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192