MySQL使用现状分析与优化

前言

再紧张的裁员氛围,也不该影响你学习的心态。不要本末倒置,技术永远不会落后,只要你还在学习的道路上,没有后退。

 

数据库架构

目前生产环境RDS是多区可用架构。数据库实例发生计划内或计划外的中断时, Amazon RDS 会自动切换到另一个可用区中的备用副本。

完成故障转移所用的时间取决于在主数据库实例变为不可用时的数据库状态和一些其它因素如监控。故障转移时间通常为 60-120 秒。

事务较多或时间较长的恢复过程可能延长故障转移时间

 

一次生产事件案例

 

全表扫描

建议:

1. object_id 列添加索引

ALTER TABLE bi_bobject ADD INDEX idx_object_id (object_id) ;

 

 低效索引

 

 

p_custom_data_453

增加索引前

增加索引后

 

索引优化建议 p_custom_data_

 

 

 低效查询【SELECT *】

 

无法利用覆盖索引

无用的列会浪费宝贵的系统资源(网络、内存、MySQL解析)

 

执行计划 DEPENDENT SUBQUERY

优化效果

 

执行计划中一定要避免DEPENDENT SUBQUERY!!

 

系统异常行为

 

 a_account索引优化建议

 

 

大表索引优化

SQL优化

 

 

改进方向

 

 

作者:含笑半步颠√

博客链接:https://www.cnblogs.com/lixy-88428977

声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,欢迎转载。转载与引用请注明作者及出处。

 

转载于:https://www.cnblogs.com/lixy-88428977/p/10286390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL的`EXPLAIN`语句可以帮助我们分析查询语句的执行计划,从而优化查询性能。下面是一些常见的优化指标和相关的解释: 1. `type`列:表示访问数据的方式,常见的取值有`ALL`、`index`、`range`、`ref`、`eq_ref`、`const`等。一般来说,访问数据的方式越好,性能越高。 2. `key`列:表示使用的索引。如果该列为NULL,则表示没有使用索引。索引的选择要尽量满足查询条件,并且覆盖需要返回的数据列。 3. `rows`列:表示MySQL估计需要扫描的行数。行数越少,性能越好。 4. `Extra`列:额外的信息,常见取值有`Using where`、`Using index`、`Using temporary`、`Using filesort`等。这些信息可以帮助我们判断是否存在潜在的性能问题。 根据这些指标,我们可以进行索引优化,以下是一些常见的优化策略: 1. 确保表上有适当的索引。通过分析查询语句的WHERE条件和JOIN条件,选择合适的索引。可以使用`CREATE INDEX`语句来创建索引。 2. 尽量避免全表扫描(即type为`ALL`)。可以通过添加适当的索引、优化查询语句或者调整表结构来避免全表扫描。 3. 避免使用临时表(即`Using temporary`)。可以通过优化查询语句,避免使用`GROUP BY`、`DISTINCT`、`UNION`等操作,从而避免使用临时表。 4. 避免使用文件排序(即`Using filesort`)。可以通过添加适当的索引、调整查询语句或者调整排序方式来避免文件排序。 5. 注意使用索引覆盖。索引覆盖是指查询时只使用索引而不需要访问表数据,可以通过合理选择索引和查询列来实现。 以上是一些常见的MySQL索引优化方法,具体的优化策略需要根据具体的查询语句和数据情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值