mysql优化最常见的就是my.cnf文件配置优化
限制线程,访问等等
 max_connections = 151   
每个版本的限制不一样,限制最多连接数,并发访问多,可以适当调高
 back_log = 数值
如果并发量大,很多命令没法及时解决,使用这个参数就可以让后来的命令排队,存放在堆栈中
show full processlist   使用这个命令可以查看有多少命令在等待中,如果很多这时候就需要增加 back 或者connections的值
wait_timeout = 60 是一个非交互式等待的秒数,省的占用资源
interactive_time = 200 交互式链接,如果长时间不操作自动断开,给其他资源让路
key_buffer_size = 256M
索引缓冲区大小,会缓存索引,省的去磁盘读取节省IO资源,但是会占用内存空间
show status like 'key_read%';  查看索引请求,多少是在缓冲区  多少没有.
query_cache_size = 256M
SQL查询语句缓冲,需要两条语句一模一样才能匹配
show status like 'Qcache%' 查看各种query_cache_size设置信息
Qcache_free_blocks    如果数值过大则是碎片过多需要整理
 
Qcache_free_memory   剩余内存大小
Qcache_hits       多少次命中缓存,
Qcache_inserts    多少次未命中
Qcache_lowmem_prunes    因为内存不足而不记录的语句
show variables like 'query_cache%'
query_cache_ limit   超过多大的查询不缓存,看情况
query_cache_ min_res_unit  块的大小,大了提高速度,小了节省空间
query_cache_ size    查询缓存大小
query_cache_ type = 0/1/2 缓存类型,0等于关闭不缓存   1会缓存所有结果   2 通过sql_cache 指定需要缓存的查询
max_connect_errors = 10 
密码错误次数限制,可以防止暴力破解,如果输错多少次,以后再也不响应,除非重启mysql或者flush hosts清空.
sort_buffer_size = 2M
mysql是通过线程来处理问题,主线程,分配给一个工作线程,每个线程会占用一定内存资源,如果这个值过高,在碰巧遇到高并发,就会耗尽内存,看情况而定
max_allowed_packet = 32M
mysql会根据这个来限制接受的数据包大小,如果大了则失败
join_buffer_size=2M
表关联缓存大小,和
sort_buffer_size = 2M一样,对每个线程链接分配.
 thread_cache_size = 300
缓存的工作线程, 主线程有事情了直接从缓存线程中提取分配,如果自动生成在结束时会自动销毁.

-----------------------------------------------------------------------------
innodb配置
innodb_buffer_pool_size = 2048M
类似key_buffer_size lnnodb使用这个来确定缓冲数据和索引的大小
innodb_flush_log_at_trx_commit = 0/1/2
0每秒钟将logbuffer中的数据写入flush
1美妙和每次事物提交将log buffer中的数据写入flush
2每次每秒钟完成一次flush操作
这条对速度的影响非常大,如果在允许mysql地址碎金部分事物的危险前提下,可以设置0  2.
innodb_thread_concurrency = 0 
设置innodb的并发量,0不限制   一般CPU核心数的2倍,一般为8
innodb_log_buffer_size = 32M
缓存日志大小,事物很大,需要增加缓存
innodb_log_file_size = 50M
确定数据日志文件的大小
 innodb_log_files_in_group =3
mysql 可以将日志文件写到多个文件,推荐是3
read_buffer_size = 1M
为每个链接单独分配内存,可以增加性能,但是消耗内存
read_rnd_buffer_size = 16M
 随手记读缓冲区大小,如果需要排序时,会分配一个随机读缓冲区进行排序查询,避免磁盘搜索占用IO提高查询速度,如果数据大可以适当提高.
bulk_insert_buffer_size = 64M
批量插入缓存大小可以有效提高效率,默认8M
binary log 
log-bin=/*****mysql-bin
binlog_cache_size 
存储二进制日志文件缓存
max_binlog_cache_size = 8M 使用的cache内存大小 
max_binlog_size = 512M 日志文件大小,如果达到则会创建新的binlog日志
expire_logs_days = 7  定期清理过期日志
mysqladmin flush-logs 重新生成新的日志文件.