Mysql进阶【3】论述Mysql优化

news2024/11/23 21:36:56

1.通过explain查看sql的详细信息

Mysql的sql优化企业里边主要是对慢sql进行优化,对语句进行优化,对索引进行优化

通过explain查看sql的详细信息,并且分析sql语句存在的问题,比如有没有使用到索引、使用了索引还是慢是不是索引设置的不合理、没有显示使用到索引是不是触碰了索引失效的规则。

使用explian的方法也就是在sql前边加上explian.

 字段解析:

  1.  id:查询序列号,因为explain可能会存在多条,标记条数用的
  2. select_type:查询语句类型:
    1. simple:普通查询
    2. union、union all:联合查询
      1. derived:包含子查询
      2. union result  :连接查询结果

    3. subquery: 子查询
  3. table:查询的表名称

  4. type:连接类型

    1. system:只有一行,或者是空表

    2. ​​​​​​​const:唯一索引或者主键

    3. eq_ref:唯一索引扫描

    4. ref:非唯一索引扫描

    5. range:索引范围扫描

    6. index:使用到了索引

    7. all:全表扫描

  5. possible_keys:此次查询中可能选用的索引
  6. key:查询真正使用到的索引
  7. key_len:显示MySQL决定使用的索引size
  8. ref:哪个字段或常数与 key 一起被使用
  9. rows:显示此查询一共扫描了多少行,这个是一个估计值,不是精确的值。
  10. filtered: 表示此查询条件所过滤的数据的百分比
  11. Extra:额外信息
    1. ​​​​​​​Using filesort:文件排序
    2. Using index:where后使用到了索引,会出现Using index;Using Where

    3. Using  join buffer:连接缓存

 

2.MySQL 的 SQL 优化

1.对索引进行优化

  • 表行数很少的去掉索引
  • 表上的索引数量不能过多,索引过多最好去掉不常用的索引,索引的存在会占用磁盘空间,更新数据的时候,不仅仅数据需要维护,索引也需要进行维护
  • 频繁更新的字段不要作为索引,频繁更新性能消耗高
  • 区分度低的不要作为索引,区分度低,查询的数量多,回表的性能消耗增加
  • 无序的值不要作为索引,无序的数据存放排列散乱
  • 尽量使用组合索引,节省空间
  • 需要谨防索引失效规则,不要触碰此规则,避免全表扫描

2.查询语句加上limit优化sql,查询数据若只有一条,使用limit可以限制全表扫描

3.能不使用子查询就不使用,可以使用连接代替子查询的就是用连接查询,因为子查询会创建临时表,查询完毕之后会将临时表删除,创建跟删除的过程是不可避免的,势必会降低查询时间

4.如果需要关联查询,连接的字段最后建立索引

 3.MySQL 的 数据库优化

数据库优化:开启慢查询优化日志、配置连接数、数据库结构优化

开启慢查询优化日志

开启慢查询优化日志,存在慢查询的时候开启日志,然后分配慢查询日志,平时的时候不建议开启,日志的查看需要在用户下边,而不是在mysql里边。

[root@localhost ~]# mysqldumpslow -s t /var/lib/mysql/localhost-slow.log 

Reading mysql slow query log from /var/lib/mysql/localhost-slow.log
Count: 1  Time=77.12s (77s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@[192.168.200.1]
  select tk.id,ts.* from  tb_seckill_goods ts LEFT JOIN tb_sku tk ON tk.id=ts.id where ts.id>N order by ts.price

Count: 1  Time=2.00s (2s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@[192.168.200.1]
  select sleep(N)

 配置连接数

配置这个连接数,就跟连接池一样使用的池化思想,但是也不能设置过高,要根据cpu核数,任务处理时间来合理配置

# 查看 max_connections
show global variables like '%max_connections%'
# 设置 max_connections(立即生效重启后失效)
set global max_connections = 800;

 数据库结构优化

  1. 字段多的表,字段使用频率低的表字段,拆分为多个表,通过主键关联
  2. 增加中间表,需要频繁进行多表关联的多个表,可以建立中间表,建立只有不需要每次都关联,只需要查询中间表即可
  3. 合理增加冗余字段,规范化表的设计。

  4.MySQL 的 硬件优化

提升硬件设备,例如选择尽量高频率的内存(频率不能高于主板的支持)、提升网络带宽、使用SSD高速磁盘、提升CPU性能等。CPU的选择:cpu决定并发,决定处理能力

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章_从减库存聊起

在多线程高并发场景下,为了保证资源的线程安全问题, jdk 为我们提供了 synchronized 关键字和 ReentrantLock 可重入锁,但是它们只能保证一个 jvm 内的线程安全。在分布式集群、微服务、云原生横行的当下,如何保证不同进程、不同…

2023年京东618预售数据:传统滋补成预售黑马,预售额超27亿

这一期主要分享一下此次京东618预售期间的一个黑马行业——传统滋补。不管是从预售量和预售额来看,传统滋补品类的成绩都是此次大促中的佼佼者。 究其原因,近几年养生滋补也掀起了一股“国潮风”。在小红书、抖音等社交平台上,关于“健康养生…

车载摄像头专用——拓尔微低功耗超高集成PMIC TMI7205B

“2023将是汽车行业的大变革之年,全球迎来L2向L3/L4跨越窗口。”越高级别的自驾对周围环境感知要求越高,车载摄像头“高清化”势不可挡,目前已从传统的100万直接跃升至800万像素摄像头,甚至在供应层面,已有超1500万高像…

Vue.js 中的 $forceUpdate 方法是什么?有什么作用?

Vue.js 中的 $forceUpdate 方法是什么?有什么作用? 在 Vue.js 中,$forceUpdate 方法是一个很常见的方法之一。它可以强制组件重新渲染,从而让组件的视图更新。本文将介绍 $forceUpdate 方法的使用方法和作用,并给出一…

代码随想录算法训练营第二天| 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵||

LeetCode977.有序数组的平方 链接:有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 看到这道题,我第一反应就是把每个数的平方算出来然后排序&#xff…

结构体大小的计算

结构体计算要遵循字节对齐原则。 结构体默认的字节对齐一般满足三个准则: 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需…

【并发篇】04 线程池核心参数

这道题其实就是在问java中线程池的实现类ThreadPoolExecutor,这个类参数最多的构造方法有7个参数。 线程池本质上就是管理一组线程,用来执行提交给线程池的任务。提交任务用的是submit(task)。 corePoolSize设置核心线程数。核心线程执行完任务后仍然需…

java培训机构学校教学教务选课管理平台springboot+vue

近年来,随着培训机构机构规模的逐渐增大,人工书写的方式已经不能满足如此庞大的数据。为了更好的适应信息时代的高效性,一个利用计算机来实现培训机构教务管理工作的系统将必然诞生。基于这一点,设计了一个培训机构教务管理系统&a…

视觉相机模型以及投影原理推导——(单目)

相机模型简介 参考文献:视觉SLAM十四讲、视觉惯性SLAM理论与源码分析、该博客、文中的公式直接引用上面的文章,如有侵权请联系本人删除 1、针孔相机模型 投影过程 三维世界中的物体(目标点)P反射光线,通过相机光心&am…

RL - 强化学习 蒙特卡洛 (Monte-Carlo) 方法计算状态价值

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131102145 在强化学习中,状态价值 (State Value) 是指在特定状态下,智能体能够从该状态开始执行一系列动作&…

你还在用U盘和聊天工具来处理文档吗?ONLYOFFICE的协作空间来解决你的痛点了!

你还在用U盘和聊天工具来处理文档吗?ONLYOFFICE的协作空间来解决你的痛点了! 说起Office办公软件,大家想到的首先就是Word、PPT、Excel,这是微软Office的三件套,从我们当代人念大学写论文时候开始学着用,到…

PDF或图片文档内容识别、关系抽取

需求 自动识别法院和公积金中心的文书(调解书、判决书、裁定书、通知书)扫描件(PDF或图片),获取特定结构的数据,自动对比。抽取结构如: [标题,诉讼案号,执行案号,公积金,{原告: [姓名, 单位, 生…

无代码让我彻夜难眠

最近人工智能非常的火,特别是GPT,让一些程序员很慌。 但是GPT终归还是一个智能的搜索引擎,你可以问它某个问题或者算法问题,你让它快速开发一个系统,它能吗? 不能! 但是无代码可以&#xff0…

【Android Studio】Flamingo版本 更新gradle插件 7.+到8.+

步骤 build.gradle(module) android {namespace //adddefaultConfig {applicationId }}AndroidManifest.xml 取消package属性 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/andr…

nginx负载均衡+反向代理

最近业务上遇到一个需求&#xff0c;其它系统因业务校验需要调用上级系统进行数据发送或校验&#xff0c;如果上级系统停机维护&#xff0c;其它下级系统发送的http通讯会丢失&#xff0c;还要一次次补发数据&#xff0c;耗费人工与时间。使用nginx反向代理解决了部分需求。 目…

【Java项目】从0到1完成Nacos配置文件扩展和共享

文章目录 环境配置配置文件名称空间和组扩展配置共享配置文件配置文件优先级 使用nacos作用配置中心的好处在于我们可以在云端上修改配置文件之后&#xff0c;使得本地的配置重新生效&#xff0c;从而做到不用重启项目也可以加载新的配置。 环境配置 首先引入依赖&#xff0c;…

【基础知识整理】图的基本概念 邻接矩阵 邻接表

一、图概述 定义&#xff1a; 图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的&#xff1b; 其中&#xff0c;点通常被成为"顶点(vertex)“&#xff0c;而点与点之间的连线则被成为"边或弧”(edege)。 通常记为&#xff0c;G(V,E)。 图是一种重要的…

ANR中为什么会出现堆栈漂移

前言 我们排查ANR问题的时候&#xff0c;会发现有时候anr文件中捕获的堆栈信息&#xff0c;并不准确&#xff0c;而且经常会打印下面这样的堆栈&#xff1a; "main" prio5 tid1 Native| group"main" sCount1 ucsCount0 flags1 obj0x71ac6f78 self0xb4000…

java+mysql校园外卖订餐管理系统servlet

3.1 课题目的 对于客户而言&#xff0c;外卖订单管理系统最好是越方便操作&#xff0c;越简单越好。客户对于外卖订单系统&#xff0c;对他的首要要求就是能够安全&#xff0c;顺利的完成订单。但是很多时候开发人员更在意一些创新的模式&#xff0c;去增加用户的体验感或增值服…

关于变邻域搜索求解柔性作业车间问题的探讨

邻域结构交换内部关键块的操作 譬如&#xff0c;某案例的内部关键块为501—601—502—701&#xff0c;部分OS加工顺序码如下(标注的黄色底纹&#xff1a;为内部关键块) 在移动内部关键快操作时&#xff0c;请教各位是否是如下的变换&#xff1a; ① 块尾701 移至 块内工序50…