在进行 MySQL 的优化之前必须要了解的就是 MySQL 的查询过程,很多的查询优化工作实际上就是遵循一些原则让 MySQL 的优化器能够按照预想的合理方式运行而已。

MySQL 查询过程

优化的哲学

注:优化有风险,修改需谨慎。

  • 优化可能带来的问题:
  • 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。
  • 优化手段本来就有很大的风险,只不过你没能力意识到和预见到。
  • 任何的技术可以解决一个问题,但必然存在带来一个问题的风险。
  • 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果。
  • 保持现状或出现更差的情况都是失败。

优化的需求:

  • 稳定性和业务可持续性,通常比性能更重要。
  • 优化不可避免涉及到变更,变更就有风险。
  • 优化使性能变好,维持和变差是等概率事件。
  • 切记优化,应该是各部门协同,共同参与的工作,任何单一部门都不能对数据库进行优化。

所以优化工作,是由业务需求驱使的!

优化由谁参与?在进行数据库优化时,应由数据库管理员、业务部门代表、应用程序架构师、应用程序设计人员、应用程序开发人员、硬件及系统管理员、存储管理员等,业务相关人员共同参与。

优化思路

优化什么

在数据库优化上有两个主要方面:

  • 安全:数据可持续性。
  • 性能:数据的高性能访问。

优化的范围有哪些

存储、主机和操作系统方面:

  • 主机架构稳定性
  • I/O 规划及配置
  • Swap 交换分区
  • OS 内核参数和网络问题

应用程序方面:

  • 应用程序稳定性
  • SQL 语句性能
  • 串行访问资源
  • 性能欠佳会话管理
  • 这个应用适不适合用 MySQL

数据库优化方面:

  • 内存
  • 数据库结构(物理&逻辑)
  • 实例配置

说明:不管是设计系统、定位问题还是优化,都可以按照这个顺序执行。

优化维度

数据库优化维度有如下四个:

  • 硬件
  • 系统配置
  • 数据库表结构
  • SQL 及索引

优化选择:

  • 优化成本:硬件>系统配置>数据库表结构>SQL 及索引。
  • 优化效果:硬件<系统配置<数据库表结构

在这里我为大家准备一节sql的国防大学大牛精彩分享
视频内容如下;
1.从实战中来,分析SQL常见深坑;
2.优化全图谱,从0开始;
3.索引的语法精解;
4.索引的雷区,用了索引效率会更慢?
5.30分钟精通执行计划;

一个SQL引发的思考

最简单的索引

稍微复杂点的索引

索引分类

  • 普通索引:即一个索引只包含单个列,一个表可以有多个单列索引
  • 唯一索引:索引列的值必须唯一,但允许有空值
  • 复合索引:即一个索引包含多个列
  • 聚簇索引(聚集索引):并不是一种单独的索引类型,而是一种数据存储方式。具体细节取决于不同的实现,InnoDB的聚簇索引其实就是在同一个结构中保存了B-Tree索引(技术上来说是B+Tree)和数据行。
  • 非聚簇索引:不是聚簇索引,就是非聚簇索引
    show global variables like "%datadir%";

基础语法

  • 查看索引
    SHOW INDEX FROM table_name\G

  • 创建索引
    CREATE [UNIQUE ] INDEX indexName ON mytable(columnname(length));
    ALTER TABLE 表名 ADD [UNIQUE ] INDEX [indexName] ON (columnname(length))

  • 删除索引
    DROP INDEX [indexName] ON mytable;

最后送波福利。现在加入Java高阶架构即可获取Java工程化、高性能及分布式、高性能、高架构、zookeeper、性能调优、Spring、MyBatis、Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限及相关视频资料

转载于:https://juejin.im/post/5cc705405188255f1d7e976f

大牛带你学优化~案例进阶Mysql优化相关推荐

  1. mysql 优化 案例_[MySQL优化案例]系列 -- OPTIMIZE的威力

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 1.先来看看多次删除插入操作后的表索引情况 mysql> ...

  2. 【凯子哥带你学Android】Andriod性能优化之列表卡顿——以“简书”APP为例

    这几天闲得无聊,就打开手机上的开发者模式里面的"GPU过度绘制"功能,看看别家的App做的咋样,然后很偶然的打开了"简书",然后就被它的过度绘制惊呆了,于是写了 ...

  3. 数据库周刊54丨2020 年度报告:PingCAP、腾讯云数据库、人大金仓、GoldenDB ;CPU 100% SQL优化案例;Mysql内存溢出处理;避免删库跑路黑天鹅……

    热门资讯 [1.PingCAP 2020 年度报告|相信开放的力量 [摘要]本文为PingCAP 2020年度报告.盘点了PingCAP里程碑大事件:完成D轮2.7亿美元融资,创造全球数据库历史新的里 ...

  4. mysql 优化_常用MySQL优化

    1.大批量插入数据优化 (1)对于MyISAM存储引擎的表,可以使用:DISABLE KEYS 和 ENABLE KEYS 用来打开或者关闭 MyISAM 表非唯一索引的更新. ALTER TABLE ...

  5. 关于mysql优化_MYSQL---关于MYSQL优化

    1. 慢查询,规定查询超过2秒的为慢查询(救火) 1)mysql> show full processlist; 2)用explain查看查询语句是否经过索引,如果没有就要建立索引 long_q ...

  6. 关于mysql优化_关于MySQL优化的几点总结

    前言 现如今,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.所以,我整理了MySQL优化的几点建议,希望这些优化技巧对您有用,总结不到的,欢迎大家补充. SQL执行慢的原因 ...

  7. mysql分页案例_MySQL优化案例系列-mysql分页优化

    通常,我们会采用ORDER BY LIMIT start, offset 的方式来进行分页查询.例如下面这个SQL: SELECT * FROM `t1` WHERE ftype=1 ORDER BY ...

  8. 数据结构知识点总结_大牛带你学 | 考研数据结构中线性表中顺序结构的知识点总结...

    前言 我们都知道,数据结构中逻辑结构可以划分为线性结构(线性表)与非线性结构两大类. 而存储结构指的是数据元素在计算机中的存储及其逻辑关系的表现,也就是在计算机当中对逻辑结构的表示. 线性表的存储结构 ...

  9. java已知一个二叉树_大牛带你学 | 由二叉树的遍历序列求二叉树结构的解题方法归纳...

    前言 二叉树章节 属于数据结构考察的三大重点章节(线性表.树.图)之一,不管是在自命题院校考察和408统考都是考察频次很高的考点.今天,大牛学长就来为各位同学总结归纳一个二叉树知识考察中的常见题型的解 ...

最新文章

  1. 在Ubuntu下编译安装atom编辑器
  2. python统计文件行数检测字符串_python统计文件中的字符串数目示例
  3. 【翻译】24款界面精美的免费UI工具包
  4. python3.7安装-Linux安装python3.7
  5. W3100SM-S 短信猫代码发送 上
  6. python模块datetime_Python模块学习 datetime介绍
  7. 使用phoneGap和Sencha Touch 2开发Android应用程序(四)
  8. TCP三次握手与四次挥手的过程及原因
  9. latex缩进与对齐_科学网—Latex算法排版,不同行缩进不同 - 张鹏的博文
  10. JavaScript编程用法——JavaScript运行环境
  11. Win 10 环境下Miscrosoft Visual Studio 2005安装教程
  12. pve万兆网卡驱动_WiFi 6扩展有什么选择?Killer AX1650X无线网卡深度测评
  13. 支付宝小程序会员卡开通
  14. 吉林大学前卫南区计算机宿舍,睡过双一流学生宿舍后,把宿舍照片分享给你们,看看你们想去的学校宿舍长啥样!...
  15. android 休眠锁
  16. Windows XP 黑屏补丁
  17. android 隐藏输入法时自动关闭弹窗,Android疑难杂症之Dialog消失,关闭输入法
  18. 在快手工作是一种什么样的体验?
  19. [重点]C语言——数组
  20. BLE芯片PHY6222---两路PWM互补输出

热门文章

  1. Android Studio缓存文件夹配置
  2. 沙箱(Sandbox)
  3. 数据库性能优化—主从分离
  4. Flutter 中的Error的捕获及处理
  5. kotlin学习笔记——类型、变量、属性
  6. SDNU 1406.A+B问题(水题)
  7. Elastic Job入门(1) - 简介
  8. fedora 使用 vnc 远程 fedora 28 主机
  9. 在一台win10上启动多个mysql
  10. Androidstudio坑