暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PolarStore弹性内存池(EMP)(二)

ZzzMickey 2024-10-22
216

性能测试

  • 测试方式:同一个规格的集群,对比开启EMP功能前后的QPS性能。

  • 测试工具:Sysbench和TPC-H。

  • 测试场景:

    • OLTP基本场景read_only、write_only、read_write。

    • TPC-H基准测试。

    • 数据库典型场景:

      • game_blob:selete, update。

        场景特点:大blob的读写,频繁访问和更新大型字段更容易导致读写IO瓶颈。

      • 数据库大查询性能测试。

        场景特点:对时延敏感的主键顺序Scan和二级索引回表等场景。

      • 数据库重启测试。

        场景特点:数据库升级、升配、重启场景都会产生大量的读IO用来恢复数据库,读延迟直接影响数据库的恢复速度。

  • 测试集群规格:测试8C 64 GB的集群,对比EMP打开前后的性能。

系列存储类型规格代码CPU和内存
集群版独享规格PSL5polar.mysql.x8.xlarge8C 64 GB


  • OLTP测试

    测试配置

    • 数据量:32张数据表,每张表7000万行数据,约540 GB数据。

    • 工具:Sysbench基准测试程序oltp_read_only、oltp_write_only、oltp_read_write。

    • 测试方法:

      • oltp_read_only负载(只读):

        sysbench oltp_read_only --tables=32 --table_size=70000000 --threads=32 --rand-type=uniform --time=120 prepare
        sysbench oltp_read_only --tables=32 --table_size=70000000 --threads=32 --rand-type=uniform --time=120 run
        
      • oltp_write_only负载(只写):

        sysbench oltp_write_only --tables=32 --table_size=70000000 --threads=32 --rand-type=uniform --time=120 prepare
        sysbench oltp_write_only --tables=32 --table_size=70000000 --threads=32 --rand-type=uniform --time=120 run
        
      • oltp_read_write负载(读写混合):

        sysbench oltp_read_write --tables=32 --table_size=70000000 --threads=32 --rand-type=uniform --time=120 prepare
        sysbench oltp_read_write --tables=32 --table_size=70000000 --threads=32 --rand-type=uniform --time=120 run


    

    测试结果

    三种不同负载的测试结果如下:

  • oltp_read_only性能:开启EMP后,QPS提升可达50%。
  • oltp_write_only性能:开启EMP后,QPS提升可达30%。
  • oltp_read_write性能:开启EMP后,QPS提升可达46%,随着压力的增加,瓶颈在CPU的限制。

image


TPC-H测试

TPC-H是业界常用的一套基准,由TPC委员会制定发布,用于评测数据库的分析型查询能力。TPC-H查询包含8张数据表、22条复杂的SQL查询,大多数查询包含若干表Join、子查询和Group by等聚合。


说明

本文的TPC-H的实现基于TPC-H的基准测试,并不能与已发布的TPC-H基准测试结果相比较,本文中的测试并不符合TPC-H基准测试的所有要求。


测试配置

  • 测试方法:对比EMP开启前后TPC-H负载中每个query执行时间。
  • 数据大小:100 GB。

测试结果

选取其中几个典型的query进行对比,EMP功能开启后,耗时降低35%~55%。


image


数据库典型场景测试

游戏blob

说明

在数据库中,我们常常使用BLOB(Binary Large Object)来存储大块的二进制数据,例如图片、视频等。当这些BLOB数据非常庞大,例如每行数据达到512 KB甚至更大时,我们就称之为“大BLOB场景”。

在大BLOB场景下,频繁地访问和更新这些大字段会对数据库造成巨大的读写压力,容易导致I/O瓶颈,进而影响数据库整体性能。

测试配置

  • 测试数据量:64张数据表,每张表15000行数据,blob长度为512 KB,约520 GB数据。

  • 测试场景:大blob select、update。

  • 测试工具:Sysbench基准测试程序game_blob_update。

  • 测试集群规格:测试8C 64 GB的集群,对比EMP打开前后的性能。

  • 测试方式:

    • game_blob_update selects(只读)。

      sysbench game_blob_update --tables=64 --table_size=15000 --threads=32 --rand-type=uniform --blob_length=524288 --time=120 --selects=1 run
      
    • game_blob_update updates(读写混合)。

      sysbench game_blob_update --tables=64 --table_size=15000 --threads=32 --rand-type=uniform --blob_length=524288 --time=120 --selects=1 run
      

测试结果

  • 测试结果如下:

    • game_blob select性能:开启EMP后,QPS提升高达90%。

    • game_blob update性能:开启EMP后,QPS提升可达52%。

image



大数据量查询

测试配置

  • 测试数据量:表大小为1 GB、10 GB、100 GB。

  • 测试方法:测试对时延敏感的主键顺序Scan和二级索引回表。

    • Scan主键。

      SELECT COUNT(*) FROM sbtest1 FORCE INDEX(PRIMARY);
      
    • Scan二级索引回表。

      SELECT MAX(pad) FROM sbtest1 FORCE INDEX(k_1);
      


测试结果

  • 测试结果如下:
    • 冷数据场景下Scan主键获得100%左右的速度提升。
    • Scan二级索引回表获得95%以上的速度提升。image



数据库重启

测试配置

  • 测试方法:Sysbench准备数据后,调整刷脏参数使刷脏变慢,插入数据过程中重启数据库进程,统计重启恢复时间。对比开启EMP前后的恢复时间。
  • 数据量:240 GB,重启时Redo数据量6 GB。

测试结果

  • 测试结果如下:

    • 重启总耗时获得25%的速度提升。

    • 重启总耗时包括Scan Redo和Apply Page两个阶段,Apply阶段速度提升78%。

image


相关链接

  • 产品文档:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/polarstore-elastic-memory-pool-emp?spm=a2c4g.11186623.0.i4
  • 邀测文档:https://help.aliyun.com/zh/polardb/polardb-for-mysql/invited-test-polarstore-elastic-memory-pool?spm=a2c4g.11186623.0.i21
文章转载自ZzzMickey,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论