mysql优化调整

mysql调优

慢查询:认为定义的,比如超过了1s的查询,把这个sql语句记录到一个日志文件里,会增加io,debug时候用,一般别开
定义方法:
vim /etc/my.cnf
  log-slow-queries=/tmp/slow.log 慢速日志存放的位置
   long-query-time=20       超出多长时间算作慢速查询

 

从四个部分考虑
1网络
操作系统上优化:
tcp.max_syn_backlog  这个是处于syn_rec状态
/proc/sys/net/core/somaxconn 
还有配置文件里的
connect_timeout 连线超时时间
interactive_timeout 连接后什么都不执行的超时时间

 

2内存
myisam引擎必调

 Key---->Mysam引擎的索引
 Read hit ---->命中率(越高代表着效率很高)
 调整key_buffer
 方法1:
 show variables like '%key%';
 set global key_buffer_size=16777216;
 方法2:必须要重新启动服务
 vim /etc/my.cnf
 key_buffer_size=16777216

innodb引擎必调
 InnoDB Buffer Pool 巨逼重要 工作中必须调,就是把 ibdata1这个文件缓存到这里
 Usage 越大越好
 show variables like '%innodb%';
 set global innodb_buffer_pool_size='8388608';
 注:建议大小设置为整个内存的80%
 Pages 单位:16

Tables 增快表访问的速度
set global table_cache='128'; 把表的文件描述符写入到内存中了,下次打开的话可以省略打开文件的过程了

Created Temp 创建临时表(排序、索引)利用内存来进行这些动作,速度会快,但是消耗内存
tmpdir /tmp/  临时表创建的位置
tmp_table_size 如果创建临时表的大小超过32M将会把数据写入到磁盘中

Threads 线程缓存,增加查找速度
show variables like '%thread%';
set global thread_cache_size='99999999'; 

Connections
Max used  最大连接数 针对机器来说,性能越好可以处理的连接数越大。
show variables like '%max%';
set global max_connections='100'; 

3io
show variables like '%innodb_flush_log%';
 innodb_flush_log_trx_commit
 0 最不安全,但是效率是最高,每隔一秒钟会把数据写入到硬盘上,如果断电或者数据库服务坏了,数据就丢失了
 1 最安全,数据会时时的写到硬盘上
 2 先写到操作系统的内存中,再写入到磁盘中,mysql进程死了,数据不丢,但是断电了,数据就丢失了(建议)

 绕过操作系统的缓存,直接将数据写入到磁盘中,好处是节省了内存
 vim /etc/my.cnf
 innodb_flush_medthod=O_DIRECT
 /etc/init.d/mysqld restart
操作系统上考虑:
不需要 noatime 增加文件描述符 还有


4cpu
主频高
核心
grub 里分离一下
taskset 绑定
mysql 使用的是线程,进程只在一个核上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章