Mysql 性能分析(慢日志、profiling、explain)、读写分离(主从架构)、分库分表(垂直分库、垂直分表、水平分表)

查看系统性能参数

一条sql查询语句在执行前,需要确定查询执行计划,如果存在多种执行计划的话,mysql会计算每个执行计划所需要的成本,从中选择
成本最小 的一个作为最终执行的执行计划

想要查看某条sql语句的查询成本,可以在执行完这条sql语句之后,通过查看当前会话中的 last_query_cost 变量 来得到当前查询的成本

这个查询成本对应 SQL 语句所需要读取的页的数量


查看系统性能参数

show [global | session] status like '参数';

常用参数:

Connections:连接mysql服务器的次数,只有请求一次就算,不管是否连接成功

uptime:mysql 服务器的上线的时间 单位 s

slow_queries: 慢查询的次数

innodb_rows_read:select 查询返回的行数

innodb_rows_inserted: 执行insert 操作插入的行数

innodb_rows_updated:执行update操作更新的行数

innodb_rows_delete:执行delete操作删除的行数

Com_select:查询操作的次数

Com_update:更新操作的次数

Com_delete: 删除操作的次数

定位执行慢的SQL: 慢查询日志

mysql 慢查询日志,用来记录在mysql中 响应时间超过阀值 的语句,具体指运行的时间超过 long_query_time 值的sql,

则会被记录到慢查询日志中。 long_query_time 默认值 10(单位s),意思大于10s,的语句,就会记录了。

慢查询日志收集了 执行效率较低的sql,在结合 explain 进行全面分析。

默认情况下,mysql数据库没有开启慢查询日志,因为开启慢查询日志或多或少带来一定的性能影响

慢查询日志支持将日志记录写入文件


持久性方式 my.ini my.cnf \临时性方式



开启慢查询

set global slow_query_log=off;

关闭慢查询日志

方式1:永久性方式

修改my.ini 或者 my.ini 文件 把 slow_query_log=OFF, 保存,重新服务即可生效


linux 中 用 mysqldumpslow知道查看慢日志文件

profiling, 命令将被弃用,可以从information_schema中profiling数据表进行查询

查看profing 状态,开启profing


show profile 常用查询参数

all:显示所有的开销信息 show profile all for query xx;


删除慢查询日志

linux

rm xxxxx

使用 mysqladmin flush-logs 来重新生成查询日志文件。

mysqladmin -uroot -p flush-logs slow



相关推荐
与衫1 小时前
掌握嵌套子查询:复杂 SQL 中 * 列的准确表列关系
android·javascript·sql
看山还是山,看水还是。1 小时前
MySQL 管理
数据库·笔记·mysql·adb
momo小菜pa1 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke2 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
小宇成长录2 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
团儿.3 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
权^4 小时前
MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)
大数据·数据库·学习·mysql
万事大吉CC7 小时前
mysql单表查询·3
数据库·mysql
500了7 小时前
Kotlin基本知识
android·开发语言·kotlin
人工智能的苟富贵8 小时前
Android Debug Bridge(ADB)完全指南
android·adb