1.写在前面

作为一个后端开发程序员,少不了和数据库打交道!!!

毕竟大部分的业务需求,无非就是查数据,然后在前端展示,例如:table表格展示,echarts图表展示等。

echarts图表,一般来说,大部分都是些统计业务,那就涉及到统计的SQL语句了。

统计的sql语句,很多时候,查询的效率就尤其的重要了。毕竟你等几十秒,才能展示出来。

估计客户,提着40米大刀在赶来的路上!!!

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(1)

一个资深的数据库工程师,就尤为重要了。但是大部分小型开发公司,一般不具备这样的人才。

很多时候,这些数据库的优化,都得自己干了。

干成了,升职加薪迎娶白富美走上人生巅峰!!!

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(2)

别闹,醒醒!

废话不多说了,今天我们就来谈谈数据库调优的一些思路,将会从下面几个方向展开描述!!!

  • 调优原理和JMeter案例分享
  • 连接池优化
  • SQL语句优化
  • 数据库优化

那我们今天先来谈谈调优原理和jmeter案例分享

开干!!!

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(3)

2. 数据库调优原理

思考这样一个问题:

# 请问这两条SQL语句有什么区别呢?你来猜一猜那条SQL语句执行查询效果更好! select id from sys_goods where goods_name='华为 HUAWEI 麦芒7 魅海蓝 6G 64G 全网通'; select id from sys_goods where goods_id=1496732598527979521; 复制代码

系统瓶颈图:

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(4)

灵魂三问:

1.1 为什么要进行MySQL数据库调优?
  • 提升网站整体通吐量,优化用户体验数据库是关键之一
    • 流畅页面的访问速度
    • 良好的网站功能体验
    • 避免网站页面出现访问错误
      • 由于数据库连接timeout产生页面5xx错误
      • 由于慢查询造成页面无法加载
      • 由于阻塞造成数据无法提交
  • 增加数据库的稳定性
    • 很多数据库问题都是由于低效的查询引起的

总结:不要让数据库成为系统的瓶颈!数据库的TPS,1w以上轻轻松松!

1.2 什么影响数据库性能?
  • 服务器:OS,CPU,Memory,network【大错特错!】
  • MySQL本身
    • 数据库表结构【对性能影响巨大】
    • SQL语句,低效率的
    • 超大的表
    • 大事务
    • 数据库配置
    • 数据库整体架构
    • ....
1.3 数据库调优到底调什么?
  1. 优化SQL语句:根据需求编写结构良好的SQL语句【一个需求实现的SQL是很多】
  2. 数据库表结构:建立索引,冗余字段,分表....
  3. MySQL数据库的配置:配置最大连接数,加缓存,加链接等待超时时间...
  4. 加缓存:排序缓存,查询缓存,join缓存....
  5. OS操作系统底层优化:tcp连接数,打开文件的数量,线程栈...
  6. 服务器硬件优化:多核CPU,更大内存,SSD【固态硬盘】
2. JMeter数据库压力测试案例2.1 驱动下载

在测试计划中我们要及时的添加JDBC驱动链接。这里我用的mysql数据库是5.7版本,那么我相对应的jdbc驱动选择了5.x版本。

这里,我们直接使用项目中maven仓库中对应的依赖即可,例如:

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(5)

这里以8.0.25为例。

2.2 测试过程

压力测试数据库执行的SQL的TPS,0.72k

1) 配置数据库驱动

jmeter下载地址:官网地址

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(6)

下载,直接解压即可使用。这里以5.2.1版本为例。

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(7)

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(8)

2) 配置线程组

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(9)

3) 配置JDBC 连接池

添加JDBC Connection Configuration(JDBC连接池也有人叫连接组)

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(10)

需要设置jdbc线程池名称,这个变量在JDBC request中要使用的;还有要设置Database URL,格式为:

jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC&characterEncoding=utf-8

注意:

?后面的serverTimezone=UTC&characterEncoding=utf-8不能缺少,否则会报时区错误。 在配置的时候,jmeter如果报1045-Access denied for user 'root'@'localhost'(using password: YES)这类错误,请重置访问用户的密码,以及给与该用户权限。

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(11)

注意:

  • 一个测试计划,每个线程组中,可以配置多个连接池。不同连接池使用名称唯一标识符区分。
4) 添加JDBC 请求

右键点击“线程组[Mysql]”,再添加一个采样器:JDBC request,在jmeter中request可以编辑select和insert等不同的采样器类别。即通过不同的类别添加配置我们需要的对mysql不同的操作。比如

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(12)

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(13)

  • prepared select statement 带参数拼接查询
  • select statement 查询
5) 添加结果监听器

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(14)

  • 聚合报告
  • 查看结果树
  • 活动线程数Active Threads Over Time
  • 每秒事务数TPS
  • 平均响应时间RT
  • 服务端:内存、网络、CPU、磁盘io、网络io【单位mb】
6) 查看测试结果

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(15)

数据库怎么连接jmeter(数据库调优-原理分析和jmeter案例分享)(16)

测试结论:连接数为 1 ,数据库7.2k 的TPS


好了,以上就是我个人的实操了。

个人理解,可能也不够全面,班门弄斧了。

好了,今天就先到这里了!!!^_^

后面的分享,就留在下次了,掰掰。

作者:llsydn链接:https://juejin.cn/post/7125034745389383687

,