本文主要为了对比PG和XL的单个事务处理时间,并统计XL处理事务的耗时分布。
结论:在我们的部署环境下,XL处理单个事务的耗时约为PG的4倍,XL处理事务耗时较大的为: 获取快照、获取全局事务ID、远程执行、提交事务这几个部分。详细见后文。
SystemTab
SystemTap 是可以动态监控和跟踪Linux 内核的工具,具体介绍及安装使用不做赘述,参照 《Linux 自检和 SystemTap》
这里主要用来统计函数执行耗时。脚本样例:
global s1
#process中是可执行文件的全路径,function中为要统计的函数名,在该函数return时计算耗时
probe process("/opt/pgsql10.5/bin/postgres").function("exec_simple_query").return {
s1 <<< gettimeofday_us() - @entry(gettimeofday_us()) #以微秒精度来统计,@entry方法将一个表达式放置于函数入口处
}
probe timer.s(5) { #每5s执行一次以下内容
#打印统计的次数和平均值
printf("\ns1:\t")
print(@avg(s1))
printf("\t")
print(@count(s1))
}
测试准备
测试环境
PG-XL部署方式: