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 开启死锁检测,用来避免死锁。

07-31 03:21