分享经验

以前的技术活都是有个师傅一把手教导,现在技术活只能靠自己去学习。我作为程序员,要把握两点,一是市场,二是实战技术。市场作为导向,而实战技术才是技术人员最大的财富。我经常会去看行业的招聘信息。因为那里可以看到市场需要技术人员的技术要达到什么程度,懂得什么技术。如果你懂了完全可以胜任,如果招聘信息上,你看不懂的技术,正是你要需要弥补的知识。

MySQL优化要从数据库设计、查询、索引、存储、搜索等方面优化考虑。

优化的思路:不查->少查->内存查->磁盘查->用索引->少排序

从设计上优化
1、遵从三范式建立数据表,分清楚实体,实体之间的关系,什么时候用外键,分表。
2、表优化,遵循以下原则

  • 定长变长分离
    定长指字段的字节不会变的字段一张表,变长指字段的字节会变多变少的一张表。例如,uid ,name,email 一张表,description 一张表,通过uid链表查询。
  • 常用字段和不常用的字段要分离(有点难度)
    需要结合网站具体业务来分析,分析字段的查询场景,查询频率低的字段,单拆出来。例如:列表页上是页面常用信息一个表,点击进去详细页的一个表。
  • 在1对多,需要关联统计的字段上,添加冗余字段
    例如:每个文章类发布多了多少篇。这个时候直接在文章类后面加上统计字段,每次增加一篇文章或者减少一篇文章直接操作字段,而不是文章的数据表中查询统计多少篇。
    3、字段优化
  • 字段类型优先级:整型>data,time>enum,char>varchar>blob,text 。
  • 字段的字节够用就行。
  • 尽量避免用null()。

从索引上优化

  1. 表中有两个索引,但是mysql的where语句只能用上1个。

  2. mysql查询的where语句跟索引的顺序有关。
    左前缀原则:以最左优先,按顺序where,当向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如索引index(a,b,c,d),a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。

  3. 理想的索引要求:查询频繁,长度小,区分度,尽量能覆盖常用查询字段

总结:列中的值,长度截的越短,重复度越高,区分度越低,索引效果越不好。长度截的越长,重复度越低,区分度越高,所用效果越好,但增删查改变慢影响查询速度。所以两者要取得平衡。

从查询上优化
explain +sql语句可以查看sql语句的情况,按照优化思路来优化查询语句,尽量用到索引就好。但是索引不是建的多就是好。打个比方一本书,目录很多重复,那一本书目录和内容占了很大的空间,消耗了很多资源。

从存储上优化
在mysql 建立存储函数调用,不利于维护,建议不用,除非专门有个dber负责。

从搜索上优化
1、查询关键字,在字段查询,只要在添加索引。
2、查询关键字,在内容里面查询,需要将内容,用sphinx(第三方索引插件)+mmseg(中文分词器)=coreseek。

Mysql优化,是什么,如何优化(一)相关推荐

  1. psql where里有自定义函数慢_阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结...

    MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈. CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候. 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应 ...

  2. 《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》一一第 1 章  MySQL的安装与配置...

    第 1 章 MySQL的安装与配置 深入浅出MySQL:数据库开发.优化与管理维护(第2版) 近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应 ...

  3. mysql慢SQL探测与优化

    探测手法: 慢查询一般是由于sql逻辑过于复杂或者索引失效导致的.查找慢SQL的策略就不外乎从这两个方向入手了. 更为详细的操作: (1)mysql慢查询日志: (2)mysql之SQL热分析: (3 ...

  4. Mysql中查询速度的优化

    2019独角兽企业重金招聘Python工程师标准>>> mysql中查询速度的优化 1.查看每一个表的数据量 2.left join的时候尽量减少表的大小,通过临时表,查询条件去限制 ...

  5. MySQL有关Group By的优化

    昨天我写了有关MySQL的loose index scan的相关博文(http://www.cnblogs.com/wingsless/p/5037625.html),后来我发现上次提到的那个优化方法 ...

  6. MySQL第12天:MySQL索引优化分析之性能优化案例实践

    MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...

  7. mysql数据库优化大全_MySQL数据库优化技巧大全

    简介: MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进 ...

  8. 阿里P7架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结

    MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈. CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候. 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应 ...

  9. 一入职!就遇到MySQL亿级大表优化....

    作者丨jia-xin 出处: https://www.cnblogs.com/YangJiaXin/p/10828244.html "前段时间刚入职一家公司,就遇到了 MySQL 亿级大表优 ...

  10. MySQL优化 之 Discuz论坛优化

    一. 前言 近日由于需要,对discuz论坛(简称dz)进行优化,当然了,只是涉及到数据库的优化. 先说一下服务器及dz的数据量,2 * Intel(R) Xeon(TM) CPU 2.40GHz, ...

最新文章

  1. linux环境安全测评实验报告,linux第一次实验报告
  2. 今天除夕,给您拜年了!
  3. SpringMVC中静态资源的处理
  4. Java开发岗位面试题
  5. 【习题 6-5 UVA-1600】Patrol Robot
  6. JDK8各个历史版本下载方法
  7. 我是如何自学通过CISSP考试的
  8. php调用酷狗音乐APi
  9. 用 360 随身 WiFi 钓鱼
  10. word转pdf加水印以及替换内容
  11. 一个好玩的小游戏——麻神之战
  12. redis的lru原理_Redis的LRU机制介绍
  13. Visio2016中图标的查找
  14. 解决VS编译中文报错 error C2001:常量中有换行符
  15. #include<set>头文件的用法
  16. vue中 ECharts 图表使用教程
  17. 大数据——Logstash(日志收集)
  18. 阿里云短信验证服务详细基础教程
  19. 【问题记录】启动 Navicat 的过程中,遇到:Missing required library sqlite.dll,998
  20. 这几个宝藏网站助力学好Python

热门文章

  1. 西门子PLC S7-1200和Labview以太网通讯通讯周期20MS
  2. oracle 表空间 Managing Tablespace Data Files
  3. python输入一个英文句子_Python给定一个句子倒序输出单词以及字母的方法
  4. matlab声音的滤波处理,MATLAB声音信号的采集与滤波处理
  5. 服务器一直显示初始化,服务器一直初始化内存
  6. 二级考c语言还是办公软件好,计算机一级是什么水平 计算机一级和二级哪个高?...
  7. 专精特新中小企业认定标准
  8. 从阴阳五行,四书五经到国学的理解
  9. 985助理教授与二本教授哪个水平高?
  10. AGM FPGA之AG10K 系列的开发建议(连载二)