Skip to content
jojo59516 edited this page May 24, 2017 · 27 revisions

目录

  • 1 前言
  • 2 测试方式
    • 2.1 硬件配置
  • 3 读性能
    • 3.1 数据远小于内存(可用内存 64 GB)
    • 3.2 数据远大于内存(可用内存 2 GB)
    • 3.3 数据远大于内存(可用内存 1 GB)

1 前言

我们将 TerarkDB 集成到了 Pika 中,后续我们会逐步发布性能测试报告。

2 测试方式

  • 测试工具

    • redis-benchmark 测试工具
    • 该工具可以提供随机写入与随机读取测试
  • 测试参数(未注明的参数采用默认配置)

    • 总请求数:1000000
    • 并发客户端数:80
    • 数据库配置:
      • thread-num: 8
      • write-buffer-size: 1 GB
      • target-file-size-base: 64 MB
      • block-cache-size: 640 MB
      • allow-mmap-reads: yes
  • 测试对象

  • 测试数据

  • 测试数据集尺寸

    • 约为 9.1 GB
    • 约 800 万条数据
    • 平均每条数据大约 1 KB

2.1 硬件配置

  • Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz
  • Kingston 16G @ 2133 MHz x4 (64G Total)
  • SanDisk SD8SBAT256G1122 (256G SSD)
  • Ubuntu 16.04.2 LTS

3 随机读取性能

我们在开始读性能测试之前,首先将所有数据写入数据库,然后执行压缩(compact)操作,最后开始读性能测试。

  • 内存受限情况通过修改 Linux 内核参数直接限制系统可用内存来达到限制总内存开销的目的

  • 数据库大小比较 数据库大小比较

  • 得益于 TerarkZipTable 的压缩算法,Pika on TerarkDB 的数据库尺寸远小于原版 Pika

3.1 数据远小于内存(可用内存 64 GB)

  • 内存占用大小比较 内存占用大小比较

  • 由于 TerarkZipTable 在使用内存映射(Memory Map)时没有二次缓存,所以 Pika on TerarkDB 占用的内存更少

  • 每秒查询率(QPS)性能比较

每秒查询率(QPS)性能比较

  • 99.9分位延迟性能比较

99.9分位延迟性能比较

  • 得益于 TerarkZipTable 采用的可检索压缩技术,使得 Pika on TerarkDB 的随机访问性能得到极大提升

3.2 数据远大于内存(可用内存 2 GB)

  • 每秒查询率(QPS)性能比较

每秒查询率(QPS)性能比较

  • 99.9分位延迟性能比较

99.9分位延迟性能比较

  • 由于 Pika on TerarkDB 占用内存小,在内存受限的情况下依然可以表现出大部分性能,而原版 Pika 则极大地受到内存限制,发挥不出性能

3.3 数据远大于内存(可用内存 1 GB)

  • 每秒查询率(QPS)性能比较

每秒查询率(QPS)性能比较

  • 99.9分位延迟性能比较

99.9分位延迟性能比较

  • 进一步限制内存后 Pika on TerarkDB 也受制于有限的内存资源而发挥不了全部性能。但由于它本身比原版 Pika 需要的内存资源少,因此表现出来的性能依然更加优秀