数据库监控&性能优化

概述

压测过程中我们主要压的是应用程序和数据库sql。如果性能瓶颈在数据库这,数据库、应用程序的操作系统负载指标正常,应用程序的响应时间大。通过mysql的myslqdumpslow自带慢查工具查询慢sql,首先分析sql执行计划是否有全表扫描、索引失效的问题去优化,然后考虑换个性能优良的磁盘、分库分表、优化代码等方式提高性能。

详解(优化代码)

开启数据库慢sql日志,找出查询效率比较低的sql并分析。

表设计是否合理:

1)是否符合三范式

  • 保证原子性(不可拆分)
  • 每张表都有主键
  • 每列数据都与主键相关

2)是否有冗余字段

3)java中尽量使用varchar代理char的建表数据类型,能用数值的绝对不用字符存储

4)尽量避免null值,使用默认值替代空值数字使用0字符串使用空串

查看sql语句是否规范:

1)避免使用or、in、not in、!=、<>、select * 

2)   尽量避免使用子查询大部分子查询都可以连接查询

3)用到 or 的地方可以用 union 去代替实现

4)用到 in 的地方可以用 exists 去实现

sql索引是否用上

1)explain 查询sql执行计划,重点关注的几个列可就是,看下type是否全表扫描

2)看下索引是否能够用上,主要看key使用的是哪个索引

3)看下rows扫描行数是不是很大

面试常见问题

1)什么是索引?

2)建立索引的优缺点。

3)索引有哪些?

4)索引为什么块?

5)你们一般在什么情况下加索引

6)怎么知道索引没有用上?

7)用过组合索引吗?是否有序

8)什么情况下索引会失效

9)sql优化你们是怎么做的?查看上面详情内容

参考链接:

https://blog.csdn.net/qq_25502749/article/details/100034186

https://blog.csdn.net/qq_34581118/article/details/75568530?ref=myread

https://www.cnblogs.com/soundcode/p/4454292.html

https://blog.csdn.net/u014421556/article/details/52597240

相关推荐