分享按钮
RSS订阅

mysql从哪里开始优化其性能

作者: 清逸成风 |来源:原创| 标签: mysql   数据库   优化  

查看慢SQL的方法:
1、查看是否开启慢SQL日志:show variables like 'show_query_log%';
设置慢SQL的阀值:
1、查看设置:show variables like 'long_query_time%' ,默认为10S
2、set global long_query_time=3
然后去慢SQL日志中查看具体的慢SQL进行分析


mysql日志分析工具:mysqldumpslow
1、得到返回记录集最多的10个SQL:mysqldumpslow -s r -t 10 日志路劲

2、得到访问次数最多的10个SQL:mysqldumpslow -s c -t 10 日志路劲



Show Profile

查看是否开启:show variables like 'profiling'
开启 set profiling=on
查看SQL:show profiles
查看详情执行情况:show profile cpu.block io for query ID


出现以下四种SQL就有问题



全局查询日志:(不可在生产环境使用)
配置启用


MySql 锁机制

MyISAM引擎下
锁表:lock table 表名 read(write),多个表操作用逗号分隔
解锁:unlock tables
读锁(共享锁):锁表线程可以查询锁定的表,但是无法更新锁定表,对其他表无法操作;
                            其他线程可以查询锁定的表,更新操作被阻塞。但是操作其他表不受影响。
写锁(排它锁):锁表线程可以读写锁定表,对其他表无法操作;其他线程操作表会被阻塞。
查看是否有表被锁:show open tables 
通过命令查看:show status like 'table%',锁的竞争情况

Innodb
A:原子性、要么全部执行,要么全部不执行。
C:一致性
I:隔离性
D:持久性

索引失效可能导致表锁(例如自动类型转换问题)
查看等待锁:show status like 'innodb_row_lock%'

MySql主从复制

主机配置
server-id:配置主机ID
log-bin:日志路径
log-err:启用错误日志
binlog-do-db:设置需要复制的数据库
从机配置

授权同步用户:grant replication slave on *.* to '用户名'@'从机IP' identified by '密码'
刷新配置:flush privileges
查看主机状态:show master status
从机开始同步:change master to master_host='主机IP',master_user='用户名',master_password='密码',master_log_file='日志文件名',master_log_pos='同步开始位置';
开始同步:start slave
查看同步状态:show slave status