MySQL性能调优之参数设置
命令
1.show processlist; //查看mysql的连接信息
2.select SQL_CACHE * from T where id= 10; //查询mysql缓存
3.select * from information_schema.innidb_trx where TIME_TO_SEC (timediff(now(),trx_started)) > 60; //查看持续时间超过60S的长事务
原理就是监控information_schema.Innodb_trx表,
4.show variables like 'transaction_isolation'; //查看数据隔离级别
5.Flush tables with read lock (FTWRL):给整个数据库实例加全局读锁,使整个数据处于只读状态,其它线程的更新(数据更新,建表、修改表、更新类书屋提交)都会被阻塞。
参数
1.query_cache_type:设置查询缓存类型 DEMAND:不用是用缓存
2.row_examined: 表示这个语句执行过程中扫描了多少行
3.innodb_flush_log_at_trx_commit:建议参数设置成1,表示每次事务的redo log都直接持久化到磁盘。保证MySQL异常重启之后数据不丢失。
4.sync_binlog:建议设置成1,表示每次事务提交的时候binlog都持久化到磁盘,保证binlog不丢失
5.set autocommit = 1 //通过显示语句的方式来启动事务
6.explain执行计划
Extra字段
--“Using filesort”表示需要用文件排序,MySQL会给每一个线程分配一块内存用于排序,称之为sort_buffer
--“Using index”表示用到了覆盖索引
sort_buffer_size:MySQL为排序开辟的内存大小,在内存中使用快速排序,在临时文件中使用归并排序。
max_length_for_sort_data:MySQL 中专门用于控制排序的行数据长度的一个参数。
number_of_tem_files:表示临时文件的数量
examined_rows:需要参与排序的数量
7.innodb_lock_wait_timeout 设置锁等待超时时间,用来避免出现死锁。
8.inindb_deadlock_detect: on 开启死锁检测,用来避免死锁。