关闭

高性能MYSQL(查询优化)

标签: mysql数据库
20人阅读 评论(0) 收藏 举报
分类:

查询的生命周期:客户端到服务端,然后服务器上进行解析,生成执行计划,执行,返回结果给客户端。

慢查询基础:优化数据访问
1.是否想数据库请求了不需要的数据,尽量查询需要的数据,不要返回不需要的数据。
避免:查询胥的记录;多表关联时返回全部的列;总是取出全部列;重复查询相同的数据
2. Mysql是否在扫描额外的记录
衡量查询开销的指标:
1)响应时间:服务时间和排队时间。服务时间是指数据库处理这个查询真正花了多长时间;排队时间是指服务器因为等待这些资源而没有真正执行查询的时间。
2)扫描的行数
3)返回的行数

当发现查询需要扫描大量的数据但只返回少数的行,通常可以尝试以下方式:
1)使用索引覆盖扫描,把所有需要用到的列放到索引中,这样存储引擎无须回表获取对应行就可以返回结果。
2)改变数据库表结构,使用单独的汇总表。
3)重写这个复杂的查询。

重构查询方式
1. 一个复杂查询还是多个简单查询:并不是mysql完成一个查询就好。现在mysql连接和断开连接都非常高效。
2. 切分查询:将大查询切分成小查询
3. 分解关联查询

Mysql客户端/服务器通信协议
Mysql客户端和服务端之间的通信协议是“半双工“,要么由服务器向客户端发送数据,要么由客户端向服务端发送数据,两则不能同时。

查询状态
使用:select full processlist 可以查询mysql状态;
sleep;query:正在查询或者将结果发送给客户端; locked:现在正在等待表锁;
analyzing and statistics:线程正在收集存储引擎的统计信息,并生成查询的执行计划; copy to tmp table;sorting result;sending data

具体的sql优化:http://blog.csdn.net/qq_23211905/article/details/72259034

0
0

猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3086次
    • 积分:483
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:16篇
    • 译文:0篇
    • 评论:0条
    文章分类