MySQL架构优化实战系列4:SQL优化步骤与常用管理命令

一、SQL语句优化步骤 
 

1、查看MySQL状态及配置

 

show status 查看当前连接的服务器状态

show global status 查看MySQL服务器启动以来的状态

show global variables 查看MySQL服务器配置的变量

 

  • 增删改的统计

 

查看 insert delete update select查询总数

show global status like "com_insert%"

 

 

show global status like "com_delete%"

 

 

show global status like "com_update%"

 

 

show global status like "com_select%"

 

 

  • Innodb影响行数

 

show global status like "innodb_rows%";

 

 

  • MySQL连接总次数

 

show global status like "connection%";

包括成功和不成功的连接

 

  • MySQL已经工作的秒数

 

show global status like "uptime%";

 

 

  • 查看MySQL慢查询次数

 

show global status like "%slow%";

 

 

  • 查看慢查询日志相关设置

 

show global variables like "%slow%";

log_slow_queries = on slow_query_log = on 表明慢查询日志已经开启

slow_query_log_file 慢查询日志文件的路径

 

show global variables like "%long_query%";

查看慢查询执行时间粒度

 

 

2、MySQL常规日志开启配置

 

  • 配置my.conf

 

general_log = on                                                              

general_log_file = /home/mysql-run/mysql.log

 


 

表明日志已经开启。

 

3、慢查询日志开启配置

 

  • 配置my.conf

 

  • 查看慢查询日志

 

cat mysql_slow.log

 

 

4、解释执行效率较低的SQL

 

  • exiplain sql

 

或者使用desc sql

 

 

select_type : 单表查询
rows: 查询扫描的行数
key:用到的索引
key_length:用到的索引的长度
extra: using index 表示使用索引过滤掉不需要的行

 

  • 分析表索引

 

myisam 索引存放于 .MYI文件中 与数据文件.MYD 分开 myisam索引可以压缩。

Innodb表中索引和数据存放同一个文件中共享表空间。

 

更多索引相关知识请点击:https://segmentfault.com/a/1190000005087951

 

二、MySQL常用管理命令 
 

  • 查看数据库信息

 

mysql>\s

 

 

  • 查看引擎

 

mysql> show engines;

 

 

  • 查看插件

 

mysql> show plugins;

 

 

  • 查看数据库执行进程

 

mysql> show processlist ;

 

 

三、mysqldump工具 
 

命令位于:/usr/local/mysql/bin/mysqldump

 

 

  • 备份所有数据库

 

  • 备份库smudge

 

  • 导出库smudge 中 表cs_line

 

  • 导出库smudge 中 表cs_line line_id = 6 的数据 及表结构

 

  • 备份同时生成新的binlog文件, 使用 -F

 

  • 只导出表结构不导出数据,--no-data

 

  • 跨服务器导出导入数据

 

将128服务器 smudge库中的in_line 表 导入到 130 服务器smudge 库中 加上-C参数可以启用压缩传递

 

 

  • mysqldumpslow

 

慢查询日志分析

首先是要开启慢查询日志 请看我的文章:https://segmentfault.com/a/1190000005342547

查看慢查询日志存储位置:

 

  • 用法

 

-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;

-t, 是top n的意思,即为返回前面多少条的数据;

-g, 后边可以写一个正则匹配模式,大小写不敏感的。

 

  • mysqldumpslow -s -r 按照返回的记录数排序

 

mysqldumpslow -s -r /home/mysql-run/mysql_slow.log

 

  • mysqldumpslow -t 1 查看前1条

 

  • 过滤 order by 慢查询

 

四、mysqlsla工具 
 

安装完毕命令位于: /usr/local/bin/mysqlsla

 

 

默认MySQLsla 工具是不可以使用的,需要添加依赖环境

 

  • 依赖相关

 

相关:DBD-mysql-4.013.tar.gz DBI-1.608.tar.gz mysqlsla-2.03.tar.gz

 

下载地址:http://pan.baidu.com/s/1eSCvFAq

 

  • DBI的编译安装

 

  • DBD-mysql驱动模块的编译安装

 

  • mysqlsla的编译安装

 

  • 用法

 

筛选数据库smudge慢查询
 

mysqlsla -lt slow /home/mysql-run/mysql_slow.log

 

 

筛选数据库smudge慢查询 ,并排除select语句 ,只取前两条

 

 


时间: 2025-01-26 22:05:51

MySQL架构优化实战系列4:SQL优化步骤与常用管理命令的相关文章

MySQL架构优化实战系列2:主从复制同步与查询性能调优

一.主从复制同步部署   1.概念 主从复制:2台以上mysql服务器, 做负载均衡, 主服务器负责增删改 , 从服务器负责查询 同步原理:mysql开启bin-log日志,主服务器所有的增删改操作会记录到bin-log日志:然后主服务器把bin-log日志发送 给 从服务器 , 从服务器重放bin-log日志 确保数据同步 2.开启bin-log日志 配置 my.cnf 文件 并重启 mysql [root@localhost etc]# vim /etc/my.cnf     [root@l

mysql 查询重复的数据的SQL优化方案

 在mysql中查询不区分大小写重复的数据,往往会用到子查询,并在子查询中使用upper函数来将条件转化为大写.如:   代码如下: select * from staticcatalogue WHERE UPPER(Source) IN (SELECT UPPER(Source) FROM staticcatalogue GROUP BY UPPER(Source) having count(UPPER(Source))>1) ORDER BY upper(Source) DESC;   这条

mysql 查询重复的数据的SQL优化方案_Mysql

在mysql中查询不区分大小写重复的数据,往往会用到子查询,并在子查询中使用upper函数来将条件转化为大写.如: 复制代码 代码如下: select * from staticcatalogue WHERE UPPER(Source) IN (SELECT UPPER(Source) FROM staticcatalogue GROUP BY UPPER(Source) having count(UPPER(Source))>1) ORDER BY upper(Source) DESC; 这条

后端系统性能优化(三) sql优化

昨天我为大家介绍了如何去发现坏代码,如何优雅的去实现一个应用内的监控程序.当然发现了坏代码之后,我们还是要想办法来改掉它,也许它会很顽固.今天说说性能优化的一个非常重要的部分:sql的优化 今天要说的不是怎么来写优秀的,性能好的sql,这些DBA们会比我更加专业.在我们公司,凡是DBA能优化的sql,DBA都在内部消化了,需要反馈给我们的,说明他们可能也束手无策.也是我们该出手的时候了. insert,update这类型的sql,性能一般不会太慢,我把这其中可能出现的问题糅合在一个例子中,组成这

MySQL架构优化实战系列3:定时计划任务与表分区

一  定时计划任务 1.概论 mysql计划任务可以定时更新数据库表或者做大文件的汇总表. 2.配置 开启计划任务 SHOW VARIABLES LIKE 'event_scheduler' 查看是否开启 off 表示未开启 set global event_scheduler =1 此次重启之后的mysql器件生效 永久生效   可见已经开启 3.语法体 4.周期或者时间点语法 每1秒执行 on schedule every 1 second 10天后执行 on schedule at cur

数据库优化实践:MS SQL优化开篇

数据库定义: 数据库是依照某种数据模型组织起来并存在二级存储器中的数据集合,此集合具有尽可能不重复,以 最优方式为特定组织提供多种应用服务,其数据结构独立于应用程序,对数据的CRUD操作进行统一管理和 控制,数据库是数据管理的高级阶段,是在文件系统上发展起来的. 基本结构: 数据库分三个层次:分别为物理数据层.概念数据层.逻辑数据层. 物理数据层:它是数据库的最内层,是物理存贮设备上实际存储的数据的集合.这些数据是原始数据 ,是用户加工的对象,由内部模式描述的指令操作处理的位串.字符和字组成.

SQL Server常用管理命令小结_MsSql

1. 查看数据库的版本 select @@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4. 查看数据库启动时间 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看数据库服务器名和实例名 print 'Server Name...............:' + conver

SQL Server常用管理命令小结

1. 查看数据库的版本 select @@version 2. 查看数据库所在机器操作系统参数 exec master..xp_msver 3. 查看数据库启动的参数 sp_configure 4. 查看数据库启动时间 select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 查看数据库服务器名和实例名 print 'Server Name...............:' + conver

CloudDBA初体验:SQL优化建议

数据库诊断和优化过程具有相当的复杂性,通常需要专业的DBA来解决.但在云计算的今天,人力运维和支撑已经变得不可能,自动化,智能化运维和服务支持日益迫切. 阿里云数据库团队在这方面不断的探索和积累,产出了CloudDBA.其目的就是要把我们已知问题和最佳实践能够以最简单的方式告诉用户,把我们多年使用数据库的经验传承给用户,方便客户使用云上数据库,给客户带来直接的价值.CloudDBA同时也在服务着内部业务,4000+的数据库实例之前需要一个team的运维人员,到现在我们只有一个同学,运维效率大幅提