测试环境 1台IBM Intel(R) Xeon(R) CPU E5606 @ 2.13GHz,内存12G
cd tpcc/tpcc-mysql/src
# make
cc load.o support.o `mysql_config --libs_r` -lrt -o ../tpcc_load
/usr/bin/ld: cannot find -lperconaserverclient
collect2: ld 返回 1
make: *** [../tpcc_load] 错误 1
# vi /etc/ld.so.conf.d/percona-x86_64.conf
/usr/local/percona/lib
# ldconfig -v 可看到
/usr/local/percona/lib:
libHotBackup.so -> libHotBackup.so
libperconaserverclient.so.18 -> libperconaserverclient_r.so.18.1.0
但 make 依然出错
# mysql_config --libs_r 输出
-L/usr/local/percona/lib/mysql -lperconaserverclient -lpthread -lm -lrt -lssl -lcrypto -ldl
/usr/local/percona/lib/mysql 下没有 libperconaserverclient.so 文件,但在 /usr/local/percona/lib 下有,做个链接
# cd /usr/local/percona/lib/mysql
# ln -s ../libperconaserverclient.so libperconaserverclient.so
编译通过了
要对脚本做适当修改,建表 create_table.sql
sed -i 's/Engine=InnoDB/Engine=tokudb/' create_table.sql
add_fkey_idx.sql 删除外建相关语句
load 100库
innodb 8.3G 1小时22分钟
tokudb 6.5G 1小时39分钟
看上去压缩效果并不明显,原因应该是tpcc的模拟数据随机性比较大,重复率低,我们日志库的压缩率就非常明显,是原来的1/8左右。
首次sql执行时间(秒)
select count(*) from customer;
innodb 1.06 tokudb 2.79
调整缓存 innodb 1G tokudb 8G 重启后测tokudb
停机时 InnoDB: Waiting for page_cleaner to finish flushing of buffer pool 花了2,3分钟
io wait 降到10%~20%+
第一次 7023.700 TpmC 第二次
tokudb_row_format = tokudb_uncompressed
第一次 6646.050 TpmC 第二次 7344.450 TpmC
结论:不压缩总体结果并无明显优势
200仓库继续测试,tokudb_row_format = tokudb_fast
tokudb 占用 12G
导入费时 2时46分 加索引费时 35分钟
32并发,预热2分钟,测试20分钟
第一次 4884.400 TpmC 第二次 4735.650 TpmC
64并发
第一次 5333.250 TpmC
| 总仓库数 | 压测仓库数 | 缓存 GB | 禁用系统缓存 | 并发 连接数 | TpmC 第1次 | TpmC 第2次 |
tokudb | 100 | 100 | 4 | 否 | 32 | 1719.300 |
|
Innodb | 100 | 100 | 4 | 否 | 32 | 1531.000 |
|
|
|
|
|
|
| +12.30% |
|
tokudb | 100 | 100 | 4 | 否 | 64 | 2182.650 |
|
Innodb | 100 | 100 | 4 | 否 | 64 | 2322.500 |
|
|
|
|
|
|
| -6.02% |
|
tokudb | 200 | 100 | 10 | 是 | 64 | 6481.750 |
|
Innodb | 200 | 100 | 10 | 是 | 64 | 3199.000 |
|
|
|
|
|
|
| +102.62% |
|
tokudb | 200 | 200 | 10 | 是 | 64 | 2683.150 |
|
Innodb | 200 | 200 | 10 | 是 | 64 | 1206.750 |
|
|
|
|
|
|
| +122.35% |
|
tokudb | 400 | 400 | 10 | 是 | 64 | 953.900 | 1047.800 |
Innodb | 400 | 400 | 10 | 是 | 64 | 311.200 | 498.950 |
|
|
|
|
|
| +207% | +110% |
tokudb | 400 | 200 | 10 | 是 | 64 | 2981.900 | 2745.450 |
Innodb | 400 | 200 | 10 | 是 | 64 | 851.300 | 1992.200 |
|
|
|
|
|
| +250% | +38% |
tokudb | 400 | 200 | 8 | 是 | 64 | 1889.500 |
|
tokudb | 400 | 200 | 4 | 是 | 64 | 1452.100 |
|
tokudb | 400 | 200 | 1 | 是 | 64 | 551.700 |
|
注:预热时间2分钟,压测时间20分钟,压测结果均符合要求;
总体结论:tokudb推荐用压缩数据,性能比innodb好,在数据量大的情况下表现更明显。
linux禁用文件缓存:# echo 1 > /proc/sys/vm/drop_caches