MySQL(二):MySQL性能优化
【目录】
- MySQL(一):MySQL中的事务
- MySQL(二):MySQL性能优化
【前言】
在对MySQL的事务进行了学习总结之后,继续对MySQL的性能优化进行学习并进行总结,将自己在工作中的性能优化经验以及自己一个实战进行记录,与大家共享;
【那些不得不知的优化技巧】
一、根据自己以往的经历和查阅些相关资料之后对MySQL的优化总结了以下几点:
1、建表注意事项:字段要尽可能少,将不同的字段拆分尽量可以查缓存;
2、SQL语句的优化(比如join联表查询时要先缩小两个表数据范围然后再join);
3、建立索引---索引的分类:唯一索引、主键索引、全局索引;
4、分表分区---分表 纵向分割(将列分到不同的表中) 、横向分割(按行的特性将数据分);
5、主从复制和读写分离;
6、数据库的集群;
二、真实案例
1、场景说明:
需要找到用户最新一笔订单,并且订单为结清状态,并且当前时间在其结清时间的7到15天内一批数据
2、未优化前的sql情况
(1)实现SQL语句
SELECTid,customer_id,repayment_state,final_settle_date
FROM(SELECTid,customer_id,repayment_state,final_settle_dateFROMwf_cr_borrow_orderWHEREid > 0ORDER BYapply_time DESC) AS temp
GROUP BYcustomer_id
ORDER BYid
LIMIT 1000
(2)执行情况(线上MySQL慢日志查看)
MySQLTotalExecutionCounts | MySQLTotalExecutionTimes | MaxExecutionTime | MaxLockTime | ParseTotalRowCounts | ParseMaxRowCount | ReturnTotalRowCounts | ReturnMaxRowCount | SQLText |
761 | 6214 | 19 | 0 | 2232121035 | 5919899 | 761000 | 1000 | select id , customer_id , repayment_state , final_settle_date from ( select id , customer_id , repayment_state , final_settle_date from wf_cr_borrow_order where id > :1 order by apply_time desc ) as temp group by customer_id order by id limit :2 |
解释:每天需要执行761次,每次最多耗时19秒,总共执行1.7小时;
3、优化后的sql情况
(1)相应的SQL实现
SELECTid,customer_id,repayment_state,final_settle_date
FROMwf_cr_borrow_order
WHEREparam8 = 1
AND apply_time < NOW()
AND id > 0
AND repayment_state IN (2, 5)
AND NOW() BETWEEN date_add(final_settle_date,INTERVAL 7 DAY
)
AND date_add(final_settle_date,INTERVAL 15 DAY
)
ORDER BYid
LIMIT 1000;
(2)执行情况:
只需执行两次,每次执行1.5秒,总共执行3秒;
4、优化前后对比:
优化执行总时长为1.7小时,优化后执行3秒,效率提升2040倍;
【总结】
SQL性能优化是每个程序员必备的技能,掌握这些技巧然后根据业务灵活运用;
想要留住客户,用户体验是很重要的一块儿,性能的体验是用户体验的一个重要的部分。
MySQL(二):MySQL性能优化相关推荐
- MySQL模糊查询性能优化
一.背景 我们经常在数据库中使用 LIKE 操作符来完成对数据的模糊搜索,LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式. 如果需要查找客户表中所有姓氏是"孙"的数据 ...
- 高性能Mysql之查询性能优化
高性能Mysql之查询性能优化 为什么查询速度会慢 慢查询基础:优化数据访问 重构查询的方式 MySQL查询优化器的局限性 优化特定类型的查询 即使我们设计了一个最优的库表结构,建好了最好的索引,如果 ...
- mysql isam cache_Mysql性能优化基础篇
mysql性能优化练习相关优化选项 启用慢查询日志 查看各种系统变量.状态变量 一.性能优化 1.查看服务运行的参数mysql> show variables\G; mysql> show ...
- 高性能MySQL(4)——查询性能优化
査询优化.索引优化.库表结构优化需要齐头并进,一个不落. 一.为什么查询速度为变慢 在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间.如果把查询看作是一个任务,那么他由一系列子任务组成,每个 ...
- MySQL高性能及性能优化技巧---更适合开发人员
更新次数 更新时间 首发 2021.10.25 第一次更新 2021.10.26 1.删除了书中大量不必要的存储引擎类型 2.摘要完毕Mysql架构与历史部分 第二次更新 2021.10.29 1.摘 ...
- MySQL常见的性能优化
一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...
- MySQL之sql性能优化
二十种MySQL性能优化 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这 ...
- mysql的limit性能优化
MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适 ...
- MySQL系列:性能优化
1. 优化简介 MySQL性能优化包括:查询优化.数据库结构优化.MySQL服务器优化等. 2. 查询优化 2.1 分析查询语句 MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句. E ...
- mysql配置以及性能优化(转)
MySQL配置文件my.cnf中文详解,附mysql性能优化方法分享 ================================================================= ...
最新文章
- 0基础学python难吗-零基础入门学习Python技术难不难?
- Intellj(IDEA) warning no artifacts configured
- uva 1331——Minimax Triangulation
- 封送处理您的数据:利用 COM 和 Windows 2000 的高效传输数据的技术
- Spring学习9-MyEclipse中Spring工程使用@Resource注释的问题
- .NET 中String类功能分类概述
- 可视化排班管理_企业人事资源管理系统
- 逻辑回归之,sigmoid ,交叉熵
- Mybatis_day4_Mybatis的注解开发
- VB快速读取 TextBox 第 N 行的资料
- [Unity3d][NGUI]打包NGUI预制件成Assetbundle 两种思路.
- php动态增加div,JavaScript动态创建div等元素实例
- 图片hover且设置transform其父级border-radius失效
- 数字高程模型|DEM采集的主要方式
- unicode编码表,转载自:近來情轉深的博客
- vue组件 组件的继承extend
- 论文笔记 | A Tale of Two Headers: A Formal Analysis ofInconsistent Click-Jacking Protection on the Web
- Golang 内存逃逸
- win10系统自带清除磁盘垃圾工具———磁盘清理工具
- MySQL安装当中遇到的问题
热门文章
- 为什么都敏捷开发了项目还会延期?!| 技术头条
- 调查 10,500 名 Java 开发者发现,收费的 OracleJDK 仍是主流、IntelliJ IDEA 最受欢迎...
- 我是如何在 10 分钟内搞砸 IT 面试的
- 程序员如何淡定度过 2.14 情人节?
- 删除链表的倒数第 N 个节点
- Redis配置优化和使用
- python对列求和_对单个列求和的最快方法
- java数组有跨类建立对象_50个性能优化的细节:Java高级开发必会,来学习下吧...
- lnmp编译安装mysql_LNMP一键包不安装mysql | 厘米天空
- oracle12C推SCN,Oracle 的 DBMS_SCN 修正以及SCN的auto-rollover新特性