Scylladb 性能测试

叶槟杰

看到标题相信大部分同学会对scylladb这个名字比较陌生,先来简单介绍下:ScyllaDB 是用 C++ 重写的 Cassandra,官方称拥有比 Cassandra 多10x 倍的吞吐量,并降低了延迟,是性能优异的 NoSQL 列存储数据库,和hbase一样都源自Google三驾马车之一的Bigtable。如果对Cassandra也比较陌生,有兴趣可以自行补下相关的知识,这里不做展开。来张图谱:

scylladb的官方提供了和cassandra性能对比的压测结果——http://www.scylladb.com/product/benchmarks/ycsb-cluster-benchmark/
呵呵,试问吹牛逼技术哪家强? 带着疑问和好奇,DBA组也进行了一番自测。 首先需要声明一下:压测的工具同样是YCSB,不过我们测的是 docker中的单节点,硬件系统也和官方有差距,压测的指标和官方的有出入是正常的。

首先看下我们的服务器硬件
  • 数据库服务器类型:Dell Inc.; PowerEdge R630; vNot Specified (Rack Mount Chassis)
  • CPU:20xIntel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz RAM:64 GB
  • 网络:2000Mb/s
  • 系统磁盘:1T SSD
  • 操作系统:CentOS Linux release 7.3.1611 (Core)
  • 内核版本:3.10.0-327.el7.x86_64
  • docker容器版本:Docker version 17.05.0-ce, build 89658be
  • 数据库镜像版本:scylladb 1.7.0-0.20170519.25607ab对应Cassandra 2.2.8
YCSB客户端加载程序硬件
  • 服务器类型:Dell Inc.; PowerEdge R630; vNot Specified (Rack Mount Chassis)
  • CPU:48xIntel(R) Xeon(R) CPU E5-2670 v3 @ 2.30GHz
  • RAM:96 GB
  • 网络:2000Mb/s
  • 操作系统:CentOS release 6.7 (Final)
  • 内核版本:2.6.32-573.el6.x86_64
  • YCSB版本:ycsb-0.12.0
下面是我们每次迭代的基准测试步骤:
  • 1.停止集群。
  • 2.通过删除所有数据文件和提交日志清除数据库状态。
  • 3.使用命令清除OS缓存: echo 1 > /proc/sys/vm/drop_caches
  • 4.启动集群。
  • 5.创建YCSB密钥空间和表用户表。
  • 6.在用户表中插入1000万行。
  • 7.运行OPS加载。
每个步骤对应执行的命令如下:
  • 1.docker stop scylla1
  • 2.rm -rf scylla/ && mkdir -p /data/scylla/scylla1/data /data/scylla/scylla1/commitlog
  • 3.echo 1 > /proc/sys/vm/drop_caches
  • 4.docker run --rm -p 10.10.10.36:9042:9042 --name scylla1 --volume /data/scylla/scylla1:/var/lib/scylla -d scylladb/scylla
  • 5.create keyspace ycsb WITH REPLICATION = {'class' : 'SimpleStrategy', 'replicationfactor': 1 }; USE ycsb;
    create table usertable (
    y
    id varchar primary key, field0 varchar, field1 varchar, field2 varchar, field3 varchar, field4 varchar, field5 varchar, field6 varchar, field7 varchar, field8 varchar, field9 varchar);
  • 6.bin/ycsb load cassandra-cql -P workloads/workload* -P cassandra.properties -s -threads 100
  • 7.bin/ycsb run cassandra-cql -P workloads/workload* -P cassandra.properties -s -threads 100 >> ./results/workload*.log
结果:

1000w数据量约占7.4G的存储空间;

结论:单节点未开启dpdk模式就能达到如此高吞吐量,同时提供低延迟,非常不错,很有深入调研的价值。