美文网首页
数据库简单压测

数据库简单压测

作者: 想像风一样的陈某 | 来源:发表于2019-06-04 15:00 被阅读0次

mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况

使用JM压测数据库

    1、点击测试计划,再点击“浏览”,把JDBC驱动添加进来;

        JDBC驱动:mysql-connector-java-5.1.39-bin.jar

         一般位于java环境的   \java\jre\lib\ext   文件中

    2、添加线程组,设置线程数、启动时间、循环次数

    3、右键点击该线程组,再添加一个配置元件:JDBC Connection Configuration

           JDBC配置原件参数说明:

                Variable Name(变量名):这里写入数据库连接池的名字

                Database URL:数据库连接地址 (jdbc:mysql://host:port/name)

                JDBC Driver class:数据库驱动(可以将需要连接的数据库驱动jar包复制到jmeter的lib/目录下,然后在设置测试计划界面,最下面的Library中导入)(com.mysql.jdbc.Driver)

    4、添加JDBC请求,(取样器中添加)

            Variable name:这里写入数据库连接池的名字(和JDBC Connection Configuration名字保持一致 )

            Query:里面填入查询数据库数据的SQL语句(填写的SQL语句末尾不要加“;”)

            parameter valus:数据的参数值

            parameter types:数据的参数类型

            cariable names:保存SQL语句返回结果的变量名

            result cariable name:创建一个对象变量,保存所有返回结果

            query timeout:查询超时时间

            handle result set:定义如何处理由callable statements语句返回的结果

    5、添加结果树,调试

    6、添加聚合报告,查看返回结果

利用Monyog实时监控数据库:

1/链接状态

2/数据库吞吐量

3/缓存未命中

4/声明

5/CPU使用率

6/磁盘IO

随着并发的增加,服务器的处理能力或者说tps也在增加,直到到达极限值。超过并发极限值后cpu或内存资源会出现死锁、阻塞等等问题导致服务器处理能力下降。

可以根据buffer_pool配置来提升事务处理能力

Buffer Pool

简介:Innodb维护了一个缓存区域叫做Buffer Pool,用来缓存数据和索引在内存中。Buffer Pool可以用来加速数据的读写,如果Buffer Pool越大,那么Mysql就越像一个内存数据库,所以了解Buffer Pool的配置可以提高Buffer Pool的性能。

innodb_buffer_pool_size:缓存区域的大小。

innodb_buffer_pool_chunk_size:当增加或减少innodb_buffer_pool_size时,操作以块(chunk)形式执行。块大小由innodb_buffer_pool_chunk_size配置选项定义,默认值128M。

innodb_buffer_pool_instances:当buffer pool比较大的时候(超过1G),innodb会把buffer pool划分成几个instances,这样可以提高读写操作的并发,减少竞争。读写page都使用hash函数分配给一个instances。

当增加或者减少buffer pool大小的时候,实际上是操作的chunk。buffer pool的大小必须是innodb_buffer_pool_chunk_sizeinnodb_buffer_pool_instances,如果配置的innodb_buffer_pool_size不是innodb_buffer_pool_chunk_sizeinnodb_buffer_pool_instances的倍数,buffer pool的大小会自动调整为innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances的倍数,自动调整的值不少于指定的值。

如果指定的buffer大小是9G,instances的个数是16,chunk默认的大小是128M,那么buffer会自动调整为10G。具体的配置可以参考mysql官网的介绍mysql reference

优化思路:

在数据库级别进行优化

    表格结构合理

    是否有适当的 索引来提高查询效率

    是否为每个表使用适当的存储引擎

    每个表是否使用适当的行格式

    应用程序是否使用适当的 锁定策略

    是否正确使用了用于缓存的所有内存区域?也就是说,足够大以容纳频繁访问的数据,但不能太大以至于它们会超载物理内存并导致分页。要配置的主要内存区域是InnoDB缓冲池,MyISAM密钥缓存和MySQL查询缓存。

在硬件级别进行优化

    磁盘寻求。磁盘需要一段时间才能找到一块数据。对于现代磁盘,平均时间通常低于10毫秒,因此我们理论上可以做到大约100次寻找。这个时间用新磁盘慢慢改善,并且很难针对单个表进行优化。优化寻道时间的方法是将数据分配到多个磁盘上。

    磁盘读写。当磁盘位于正确位置时,我们需要读取或写入数据。使用现代磁盘,一个磁盘可提供至少10-20MB / s的吞吐量。这比搜索更容易优化,因为您可以从多个磁盘并行读取。

    CPU周期。当数据在主存储器中时,我们必须处理它以获得我们的结果。与内存量相比具有大表是最常见的限制因素。但是对于小桌子,速度通常不是问题。

    内存带宽。当CPU需要的数据量超过CPU缓存容量时,主内存带宽成为瓶颈。对于大多数系统来说,这是一个不常见的瓶颈,但需要注意的是。

平衡可移植性和性能

    要在一个可移植MySQL程序中使用面向性能的SQL扩展,可以将MySQL特定的关键字封装在/*! * /语句的注释分隔符中。其他SQL服务器将会忽略注释的关键字。

具体参考:

https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool.html#innodb-buffer-pool-lru

相关文章

  • jmeter压测数据库

    jmeter压测数据库 JDBC request压测MysqL讲解 简介:讲解jdbc压测mysqL相关准备工作,...

  • 数据库简单压测

    mysqlslap是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解...

  • Jmeter压测

    一、 数据库压测 1. 为什么要进行数据库压测 不断给数据库施加压力,验证数据库处理的性能 2. 如何进行数据库压...

  • 一文教你如何轻松搞定数据库的性能测试!

    概要说明 使用 Jmeter来对数据库进行压测,可以有效测试数据库的稳定性和性能。相比用代码实现对数据库的压测来说...

  • 性能压测学习大纲

    一、压测的目的 二、压测的完整流程 三、压测场景分析/组织测试脚本 四、压测数据准备 五、压测指标监控 七、压测结...

  • 压测tips

    压测前: 明确压测的目的,观测指标; 准备好压测方案,几组case,case分别压测多久; 申请压测环境,告知进行...

  • 阶梯压测

    今天我们来浅谈一下阶梯压测,那么,什么是阶梯压测,什么时候做阶梯压测,阶梯压测和普通压测又有什么区别呢?阶梯压测:...

  • jmeter(九) 简单压测

    压测策略:不同并发数:10,50,100,200,400 压测结果:并发数:最佳并发用户数、最大并发用户数流量:每...

  • jmeter压测数据库

    压测前准备 1.准备驱动包 下载mysql-connector-java 驱动包(下载地址) 将驱动包解压,在测试...

  • JMeter 数据库压测

    JMeter作为一款开源的性能测试工具,可以直接对数据库进行压力测试搭建测试环境第一步 新建测试计划,并添加mys...

网友评论

      本文标题:数据库简单压测

      本文链接:https://www.haomeiwen.com/subject/jaocxctx.html