数据库的优化主要包括两个方面,一方面是 sql 程序语句的优化,另一方面是数据库服务和配置的优化。查询语句优化主要涉及两个方面:一些普遍遵循的原则,以及怎样对查询语句进行性能分析。

为了更好的体会 sql 语句带来的小类差异,建议手工创建几个结构复杂的表,多导入一些数据(例如十万条以上)进行测试,效果会比较直观。

下面让我们来看看基本语句优化的 10 个原则:

在数据库的应用中,程序员们通过不断的时间总结了很多经验,这些经验是一些普遍使用的规则。每一个程序员都应该了解并记住他们,在构造 sql 时,养成良好的习惯。

原则1:尽量避免在列上进行运算,这样会导致索引失效。

原则2:使用 join 时,应该用小结果集驱动大结果集。同时把复杂的 join 查询拆分成多个 query。

原则3:主意like模糊查询的使用,避免%%。

原则4:仅列出需要查询的字段,这对速度不会有明显影响,主要考虑节省内存。

原则5:使用批量插入语句节省交互。

原则6:limit的基数比较大时用between。

原则7:不要使用rand函数获取多条随机记录。

原则8:避免使用 null。

原则9:不要使用count(id),而应该是count(*)。

原则10:不要做无谓的排序操作,而应尽可能在索引中完成排序。

那么在实际的开发中,如何进行索引与性能分析呢!

直观的方法就是看客户端返回的执行时间。此外,还有更精确的做法,就是查看性能报告。

MYSQL执行计划就是在一条select语句钱放上关键词 explain,mysql解释它将如何处理查询,提供有关表如何联合和以书面次序联合的信息。借助于 explain 可以知道:

  1. 书面时候必须为表加入索引,以得到一个使用索引找到记录的更快的 select 方法
  2. 优化器是否以一个最佳次序连接表

另外,mysql 中有多种存储引擎,每种存储引擎都有自己的特色,想要好的性能,第一步就是选择合适的数据库引擎。

通常的观点是 myisam 注重性能,innodb 注重事务,故一般使用 myisam 类的表做非事务型的业务。这种观点产生于早起innodb引擎还不成熟的时候,而事实上并不是这样。mysql在高并发下的性能瓶颈很明显,主要原因是锁定机制导致的堵塞。而innodb在锁定机制上采用了行级锁,不同于myisam的表级锁,行级锁在锁定上带来的消耗大于表级锁,但是在系统并发访问量较高时,innodb整体性能远高于myisam。同时,innodb的索引不仅缓存索引本身,也缓存数据,所以innodb需要更大的内存,应在这个年代,内存是很廉价的。

选择存储引擎的基本原则如下:

  • 采用myisam引擎:
  1. R/W > 100 : 1 且 update 相对较少;
  2. 并发不高,不需要事务;
  3. 表数据量小;
  4. 硬件资源有限。
  • 采用innodb引擎:
  1. R/W比较小,频繁更新大字段;
  2. 表数据量超过1000万,并发高;
  3. 安全性和可用性要求高。
  • 采用memory引擎:
  1. 有足够的内存;
  2. 对数据一致性要求不高,如在线人数和session等应用;
  3. 需要定期归档的数据。

MYSQL数据库应用优化相关推荐

  1. MySQL数据库性能优化之一

    MySQL数据库性能优化需要考虑的几个方面: 1.sql语句及索引优化 2.数据库结构优化 3.系统配置优化 4.硬件优化 转载于:https://blog.51cto.com/davidlinux/ ...

  2. mysql 改表面_MySQL_解析MySQL数据库性能优化的六大技巧,数据库表表面上存在索引和防 - phpStudy...

    解析MySQL数据库性能优化的六大技巧 数据库表表面上存在索引和防错机制,然而一个简单的查询就会耗费很长时间.Web应用程序或许在开发环境中运行良好,但在产品环境中表现同样糟糕.如果你是个数据库管理员 ...

  3. (转)MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...

    标签:服务器 数据库 老男孩 高薪技能 一线城市 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liangweilinux.bl ...

  4. 知识点:Mysql 数据库索引优化实战(4)

    知识点:Mysql 索引原理完全手册(1) 知识点:Mysql 索引原理完全手册(2) 知识点:Mysql 索引优化实战(3) 知识点:Mysql 数据库索引优化实战(4) 一:插入订单 业务逻辑:插 ...

  5. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验...

    原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师-老男孩专家拥有16年一线实战经验,我当然不能和我的老师平起平坐 ...

  6. MySQL 数据库性能优化之SQL优化

    2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日  发布者: OurMySQL 来源:简朝阳 ...

  7. MySQL数据库性能优化史诗级大总结

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好 ...

  8. 数据库-面试题-MySQL数据库的优化方法

    数据库-面试题-MySQL数据库的优化方法 2017年08月22日 17:56:57 小笛子的专栏 阅读数 13236 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来, ...

  9. MySQL数据库性能优化及自动化运维实践教程!DBA日常工作

    MySQL数据库性能优化及自动化运维实践教程!本文作者将站在更加全面的角度分享他在这一年多 DBA 工作中的经验,希望可以给大家带来启发和帮助. DBA 的日常工作 我觉得 DBA 真的很忙,我们来看 ...

  10. mysql数据库的优化整理之查询优化

    作为程序员,天天都要和数据库打交道,而且以mysql居多,而数据库的优化,也是一个老生常谈的话题.今天我就整理一下mysql数据库的优化方式. 开始: 首先是查询优化: 一条查询语句在数据库中执行,如 ...

最新文章

  1. rest-framework之解析器
  2. 又踩到Dubbo的坑,但是这次我笑不出来
  3. 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
  4. 学了python能干啥-第9p,Python是什么?学了Python能干什么?
  5. DL之IDE:深度学习之计算机视觉开发环境搭建的详细流程(Ubuntu16.04+cuda9.0+cuDNN7.4.2+tensorflow_gpu)
  6. cent os mysql图形界面_cent os 6.4安装使用mysql
  7. poi数据导入arcgis,结合POI数据的道路自动选取方法
  8. js已知文件路径得到file对象_NodeJs 的几种文件路径
  9. 元数据--MySQL获取元数据的方法
  10. webpack笔记一:webpack的介绍,安装,加载css、图片、字体等
  11. python虚拟环境windows环境搭建_window10配置python虚拟环境的路径
  12. 【TSP】基于matlab自重启伪遗传改良算法求解旅行商问题【含Matlab源码 1510期】
  13. javaagent技术专利申请
  14. 计算机职业规划书备选方案,职业规划书备选方案
  15. Elasticsearch教程(19) 详解mapping之keyword
  16. 51蛋骗鸡数码管显示A-Z字母
  17. 【转】什么是数据敏感度?
  18. 博主联系方式汇总(非诚勿扰)
  19. 《东周列国志》第四十八回 刺先克五将乱晋 召士会寿余绐秦
  20. WMS设计开发方法及选购思路

热门文章

  1. [BZOJ 1048] [HAOI2007] 分割矩阵 【记忆化搜索】
  2. 2014年2月份第3周51Aspx源码发布详情
  3. 图像灰度图,直方图,像素通道问题
  4. python3多线程实例_python3多线程糗事百科案例
  5. fastjson jar包_Fastjsonlt;=1.2.47反序列化RCE漏洞(CNVD201922238)
  6. 微信小程序之通过Canvas生成图片保存到手机相册
  7. C++ reference很全面
  8. C++17尝鲜:类模板中的模板参数自动推导
  9. osgText中的setAxisAlignment和setAlignment的区别
  10. MySql中有哪些存储引擎