当前位置: 首页 > news >正文

专业国外网站建设手机自己做网站

专业国外网站建设,手机自己做网站,服装定制图片,wordpress 图标代码MySQL性能优化 在MySQL中,如何定位慢查询 慢查询表象:页面加载过慢、接口压测响应时间过长(超过1s)。造成慢查询的原因通常有:聚合查询、多表查询、表数据量过大查询、深度分页查询 方案一:开源工具 调试工…

MySQL性能优化

在MySQL中,如何定位慢查询

        慢查询表象:页面加载过慢、接口压测响应时间过长(超过1s)。造成慢查询的原因通常有:聚合查询、多表查询、表数据量过大查询、深度分页查询

方案一:开源工具 调试工具:Arthas 运维工具:Prometheus 、Skywalking。工具报表展示中可以看到哪个接口慢,并且能分析出接口中哪部分耗时较多,包括具体的SQL执行时间,这样就能定位到出现问题的SQL。

方案二:MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志 如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

# 开启MySQL慢日志查询开关slow_query_log=1
# 设置慢日志的时间为2秒,SQL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志long_query_time=2

配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息 /var/lib/mysql/localhost-slow.log。

SQL语句执行很慢,如何优化

可以采用EXPLAIN 或者 DESC命令获取 MySQL 如何执行 SELECT 语句的信息

语法:

- 直接在select语句之前加上关键字 explain / desc

EXPLAIN   SELECT   字段列表   FROM   表名   WHERE  条件 ;

  • possible_key  当前sql可能会使用到的索引
  • key 当前sql实际命中的索引
  • key_len 索引占用的大小 Extra 额外的优化建议

通过key和key_len两个查看是否可能会命中索引。

type 这条sql的连接的类型,性能由好到差为NULL、system、const、eq_ref、ref、range、 index、all

  • system:查询系统中的表
  • const:根据主键查询
  • eq_ref:主键索引查询或唯一索引查询
  • ref:索引查询
  • range:范围查询
  • index:索引树扫描
  • all:全盘扫描

总结:使用MySQL的EXPLAIN命令来分析这条SQL的执行情况。通过keykey_len可以检查是否命中了索引,如果已经添加了索引,也可以判断索引是否有效。通过type字段可以查看SQL是否有优化空间,比如是否存在全索引扫描或全表扫描。通过extra建议可以判断是否出现回表情况,如果出现,可以尝试添加索引或修改返回字段来优化。

MYSQL支持的存储引擎有哪些, 有什么区别

在mysql中提供了很多的存储引擎,比较常见有InnoDB、MyISAM、Memory

  • InnoDB存储引擎是mysql5.5之后是默认的引擎,它支持事务、外键、表级锁和行级锁
  • MyISAM是早期的引擎,它不支持事务、只有表级锁、也没有外键,用的不多
  • Memory主要把数据存储在内存,支持表级锁,没有外键和事务,用的也不多

什么是索引

        索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

索引的底层数据结构

        MySQL的默认存储引擎InnoDB使用的是B+树作为索引的存储结构。选择B+树的原因包括:节点可以有更多子节点,路径更短;磁盘读写代价更低,非叶子节点只存储键值和指针,叶子节点存储数据;B+树适合范围查询和扫描,因为叶子节点形成了一个双向链表。

聚簇索和非聚簇索引

        聚簇索引是指数据与索引放在一起,B+树的叶子节点保存了整行数据,通常只有一个聚簇索引,一般是由主键构成。

        非聚簇索引则是数据与索引分开存储,B+树的叶子节点保存的是主键值,可以有多个非聚簇索引,通常我们自定义的索引都是非聚簇索引。

聚集索引选取规则:

  • 如果存在主键,主键索引就是聚集索引。
  • 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引。
  • 如果表没有主键,或没有合适的唯一索引,则InnoDB会自动生成一个rowid作为隐藏的聚集索引。

回表查询

通过二级索引找到对应的主键值,到聚集索引中查找整行数据,这个过程就是回表

覆盖索引

覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到 。

MYSQL超大分页怎么处理 

        超大分页通常发生在数据量大的情况下,使用LIMIT分页查询且需要排序时效率较低。可以通过覆盖索引子查询来解决。首先查询数据的ID字段进行分页,然后根据ID列表用子查询来过滤只查询这些ID的数据,因为查询ID时使用的是覆盖索引,所以效率可以提升。

索引创建原则有哪些?

1). 针对于数据量较大,且查询比较频繁的表建立索引

2). 针对于常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引。

3). 尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高。

4). 如果是字符串类型的字段,字段的长度较长,可以针对于字段的特点,建立前缀索引

5). 尽量使用联合索引,减少单列索引,查询时,联合索引很多时候可以覆盖索引,节省存储空间,避免回表,提高查询效率。

6). 要控制索引的数量,索引并不是多多益善,索引越多,维护索引结构的代价也就越大,会影响增删改的效率。

7). 如果索引列不能存储NULL值,请在创建表时使用NOT NULL约束它。当优化器知道每列是否包含NULL值时,它可以更好地确定哪个索引最有效地用于查询。

索引失效

1). 违反最左前缀法则 如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列。匹配最左前缀法则,走索引:

2). 范围查询右边的列,不能使用索引 

根据前面的两个字段 name , status 查询是走索引的, 但是最后一个条件address 没有用到索引。

3). 不要在索引列上进行运算操作, 索引将失效。

4). 字符串不加单引号,造成索引失效。

由于,在查询是,没有对字符串加单引号, MySQL的查询优化器,会自动的进行类型转换,造成索引失效。

5).以%开头的Like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。

MySQl八股:Docs

http://www.dtcms.com/a/558087.html

相关文章:

  • 塑胶托盘东莞网站建设东莞市企业信息查询网
  • 语法--12-- as
  • 小迪安全v2023学习笔记(一百四十一讲)—— Linux系统权限提升篇VulnhubCapability能力LD_Preload加载数据库等
  • ROS2系列 (16) : Python服务通信实例——自定义消息接口
  • T型槽铸铁平台的特点
  • 数字马力前端开发面试题及参考答案(下)
  • 给网站做广告有什么好的网站做推广的
  • 潍坊网站建设官网装修网站开发前的准备工作
  • LLM之Agent(二十五)| 使用 A2A Agents和 MCP Server构建一个Demo Multi-Agent系统
  • 【30】船舶数据集(有v5/v8模型)/YOLO船舶检测
  • 全网视频合集网站建设制作相册图片合集
  • 网站建设建议书嘉兴手机网站建设
  • 公司网站建设 阜阳四川城乡建设网站证件查询
  • MySQL操作库
  • 免费vip影视网站怎么做的重庆网站建设与制作
  • React Hooks 实现表单验证
  • 李宏毅机器学习笔记38
  • 本网站建设优秀个人网站欣赏
  • 基于springboot的河南传统文化展示与推荐系统
  • 宁波专业网站建设公司百度网络营销的概念和含义
  • 《P2656 采蘑菇》
  • 做网站每年需付费吗河南省建设人才信息网官网
  • 做网站要用到数据库吗文网文网站建设
  • 网站策划流程专业做婚庆的网站
  • 中国住房建设部网站wordpress后台拿shell
  • day96—双指针—长按键入(LeetCode-925)
  • 本地部署 Spring AI 完全指南:从环境搭建到实战落地
  • 外贸服装网站建设高邮网站建设
  • 建设电子商务网站期末考试网站开发需求表
  • 如何利用QuickAPI管理企业数据库的API生命周期并提升数据安全