Mysql优化,是什么,如何优化(一)
分享经验
以前的技术活都是有个师傅一把手教导,现在技术活只能靠自己去学习。我作为程序员,要把握两点,一是市场,二是实战技术。市场作为导向,而实战技术才是技术人员最大的财富。我经常会去看行业的招聘信息。因为那里可以看到市场需要技术人员的技术要达到什么程度,懂得什么技术。如果你懂了完全可以胜任,如果招聘信息上,你看不懂的技术,正是你要需要弥补的知识。
MySQL优化要从数据库设计、查询、索引、存储、搜索等方面优化考虑。
优化的思路:不查->少查->内存查->磁盘查->用索引->少排序
从设计上优化
1、遵从三范式建立数据表,分清楚实体,实体之间的关系,什么时候用外键,分表。
2、表优化,遵循以下原则
- 定长变长分离
定长指字段的字节不会变的字段一张表,变长指字段的字节会变多变少的一张表。例如,uid ,name,email 一张表,description 一张表,通过uid链表查询。 - 常用字段和不常用的字段要分离(有点难度)
需要结合网站具体业务来分析,分析字段的查询场景,查询频率低的字段,单拆出来。例如:列表页上是页面常用信息一个表,点击进去详细页的一个表。 - 在1对多,需要关联统计的字段上,添加冗余字段
例如:每个文章类发布多了多少篇。这个时候直接在文章类后面加上统计字段,每次增加一篇文章或者减少一篇文章直接操作字段,而不是文章的数据表中查询统计多少篇。
3、字段优化 - 字段类型优先级:整型>data,time>enum,char>varchar>blob,text 。
- 字段的字节够用就行。
- 尽量避免用null()。
从索引上优化
表中有两个索引,但是mysql的where语句只能用上1个。
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的顺序可以任意调整。理想的索引要求:查询频繁,长度小,区分度,尽量能覆盖常用查询字段
总结:列中的值,长度截的越短,重复度越高,区分度越低,索引效果越不好。长度截的越长,重复度越低,区分度越高,所用效果越好,但增删查改变慢影响查询速度。所以两者要取得平衡。
从查询上优化
explain +sql语句可以查看sql语句的情况,按照优化思路来优化查询语句,尽量用到索引就好。但是索引不是建的多就是好。打个比方一本书,目录很多重复,那一本书目录和内容占了很大的空间,消耗了很多资源。
从存储上优化
在mysql 建立存储函数调用,不利于维护,建议不用,除非专门有个dber负责。
从搜索上优化
1、查询关键字,在字段查询,只要在添加索引。
2、查询关键字,在内容里面查询,需要将内容,用sphinx(第三方索引插件)+mmseg(中文分词器)=coreseek。
Mysql优化,是什么,如何优化(一)相关推荐
- psql where里有自定义函数慢_阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结...
MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈. CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候. 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应 ...
- 《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》一一第 1 章 MySQL的安装与配置...
第 1 章 MySQL的安装与配置 深入浅出MySQL:数据库开发.优化与管理维护(第2版) 近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应 ...
- mysql慢SQL探测与优化
探测手法: 慢查询一般是由于sql逻辑过于复杂或者索引失效导致的.查找慢SQL的策略就不外乎从这两个方向入手了. 更为详细的操作: (1)mysql慢查询日志: (2)mysql之SQL热分析: (3 ...
- Mysql中查询速度的优化
2019独角兽企业重金招聘Python工程师标准>>> mysql中查询速度的优化 1.查看每一个表的数据量 2.left join的时候尽量减少表的大小,通过临时表,查询条件去限制 ...
- MySQL有关Group By的优化
昨天我写了有关MySQL的loose index scan的相关博文(http://www.cnblogs.com/wingsless/p/5037625.html),后来我发现上次提到的那个优化方法 ...
- MySQL第12天:MySQL索引优化分析之性能优化案例实践
MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...
- mysql数据库优化大全_MySQL数据库优化技巧大全
简介: MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进 ...
- 阿里P7架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结
MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈. CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候. 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应 ...
- 一入职!就遇到MySQL亿级大表优化....
作者丨jia-xin 出处: https://www.cnblogs.com/YangJiaXin/p/10828244.html "前段时间刚入职一家公司,就遇到了 MySQL 亿级大表优 ...
- MySQL优化 之 Discuz论坛优化
一. 前言 近日由于需要,对discuz论坛(简称dz)进行优化,当然了,只是涉及到数据库的优化. 先说一下服务器及dz的数据量,2 * Intel(R) Xeon(TM) CPU 2.40GHz, ...
最新文章
- linux环境安全测评实验报告,linux第一次实验报告
- 今天除夕,给您拜年了!
- SpringMVC中静态资源的处理
- Java开发岗位面试题
- 【习题 6-5 UVA-1600】Patrol Robot
- JDK8各个历史版本下载方法
- 我是如何自学通过CISSP考试的
- php调用酷狗音乐APi
- 用 360 随身 WiFi 钓鱼
- word转pdf加水印以及替换内容
- 一个好玩的小游戏——麻神之战
- redis的lru原理_Redis的LRU机制介绍
- Visio2016中图标的查找
- 解决VS编译中文报错 error C2001:常量中有换行符
- #include<set>头文件的用法
- vue中 ECharts 图表使用教程
- 大数据——Logstash(日志收集)
- 阿里云短信验证服务详细基础教程
- 【问题记录】启动 Navicat 的过程中,遇到:Missing required library sqlite.dll,998
- 这几个宝藏网站助力学好Python
热门文章
- 西门子PLC S7-1200和Labview以太网通讯通讯周期20MS
- oracle 表空间 Managing Tablespace Data Files
- python输入一个英文句子_Python给定一个句子倒序输出单词以及字母的方法
- matlab声音的滤波处理,MATLAB声音信号的采集与滤波处理
- 服务器一直显示初始化,服务器一直初始化内存
- 二级考c语言还是办公软件好,计算机一级是什么水平 计算机一级和二级哪个高?...
- 专精特新中小企业认定标准
- 从阴阳五行,四书五经到国学的理解
- 985助理教授与二本教授哪个水平高?
- AGM FPGA之AG10K 系列的开发建议(连载二)