我们来看一下mysql的配置,mysql的配置文件我们把它放在了/etc/my.cnf,那我们核心部分是[mysqld]
[mysqld]
port = 3306 它的端口port
socket = /tmp/mysql.sock 监听的socket
skip-locking 是否要过滤掉这个lock,
key_buffer_size = 256M 很关键的内存设置,主要用来索引块的缓冲的,增加它可以增加出来索引的速度,那比如说对于所有的读 ,多重的写,那这个数值并不是越大越好,它也有一定的范围,那比如说我们1G的内存,你给它搞成256M就足够了,当然也是根据具体用的情况来划分适合的大小,那么怎么去划分适合的大小呢,就是mysql的调优,怎么样去调这个内存的大小(5758的帖子)
max_allowed_packet = 1M 允许最大的包,那这个用在什么情况下呢,往往用在mysql的一个WEB管理工具叫做phpmyadmin,我们可以再那个上面去导入一些包,一些文件
table_open_cache = 256它表示所有的线程,打开表的数量
sort_buffer_size = 1M 用来排序的缓冲区大小,那我们这个mysql它搜素语句里面会有一些排序,就像我们shell去排序数字队列的顺序一样,那他排序的时候占用多大内存呢1M就够了,当然也根据你具体用的,当然这是针对于一个线程来说的,一个线程独占这一个buffer_size
read_buffer_size = 1M 读的时候有一个缓冲区
read_rnd_buffer_size = 4M 这个是读随机的
myisam_sort_buffer_size = 64M 这个是针对myisam这个引擎来说的,其实我们mysql常用的引擎有两种,一种是myisam,一个是inodb
thread_cache_size = 8他表示缓存可重用的线程数,那这个跟咱们CPU的核数有关系一般你的CPU呢是几核那么这个写成几就可以了
query_cache_size= 16M 这个是查询的缓存大小,咱们去查询的一个搜索语句肯定会出来一些结果,那我可以把我们的结果暂存在内存里,下次再查直接拿出来就是了,这个就是存放那一部分查询结果的
thread_concurrency = 8 这个也是跟CPU的核数有关系,他呢就是最大迸发线程数,一般是逻辑CUP的数量*2,比如你是4核*2=8 那你可以把他写成8
#innodb_log_file_size = 64M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
这个是innodb相关的了,假如用innodb那就去配置一下,那还有一些可能会用到的
log-bin=mysql-bin配置它的二进制日志的,后面mysql主从复制的时候会打开这个配置
interactive_timeout=8
wait_timeout=8 这两个配置往往是一块配置才能生效的,这个数值依赖上面的数值我们会去设置一个wait_timeout因为客户端过来查询的mysql它可能会有一些sleep的状态,当他连接处理完之后,它不会立马断开,他会先暂时保持连接,但是mysql是有连接数限制的它不能超过多少如果超过了这个连接数他就会连不上,所以说我们有必要把已经完成的连接数自动的让她断开连接,所以wait_timeout这个参数还是挺有用的
long_querytime=1 关于慢查询的比如说我超过1秒就要去记录这个日志,然后记录日志的路径
log_slow_queries=/data/mysql/slow.log 这个是非常有用的,因为我们去做调优的时候这个参考依据,我们往往根据慢查询的日志进行判断