Skip to content

xijiu/tianchi-2021-db-contest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

欢迎参加 第三届数据库大赛创新上云性能挑战赛--高性能分析型查询引擎赛道 第二赛季(复赛)

请 fork 本项目,并设为 private,然后实现AnalyticDB接口,并提交自己的代码地址来完成比赛。 请务必阅读完下文的 参赛注意事项

测试环境说明

选手代码运行在容器内,容器 8核8G,每台物理机上同时只会跑一个选手容器,避免互相干扰。 测试数据放在 PMem 上,同时 选手还有一块 PMem 可以用来存储选手生成的数据文件,作为选手的工作空间。

测试流程说明

复赛相比初赛会增加持久化和高并发的考察。

  • 第一轮启动选手程序,会先调用load接口,然后单线程调用10次quantile接口。此轮20分钟超时。
  • 第一轮测试结束后,会退出进程,如果结果正确进入第二轮。
  • 第二轮启动选手程序,会先调用load接口,然后8线程并行调用quantile接口,每个线程查询500次。此轮20分钟超时。
  • 第一轮与第二轮之间不会清理选手工作空间的文件,选手可重新加载自己的数据。可以通过工作空间是否为空来区别轮次。

JVM 版本

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

JVM 参数

JVM参数默认如下:

 -Xmx4g -Xms4g -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled

选手可以通过修改项目中的 java_opts.conf 来自定义JVM参数。 自定义参数时请注意:1)不要换行 2)合理分配内存,避免过大而无法启动 3)内存分配应考虑容器 kernel 本身的开销,避免触发 OOM killer

测试数据说明

复赛有两张表 lineitem 和 orders,每表均有两列。为减少选手工作量,类型均为bigint和初赛保持一致,每表数据量均为10亿行。 格式如下:

L_ORDERKEY,L_PARTKEY
2876385239627262908,3426163450417145920
5164669269206349835,310661817109752352
4036124977818879891,1783468637370676778

为了避免精度问题导致答案错误,我们会保证所求的百分位的位点恰好是整数。 换句话说,假设有 N 行数据,求百分位 P(0<=P<=1.0),我们保证N * P是个整数。 具体可以参考SimpleAnalyticDB 实现

  • 测试数据随机,均匀分布,极低概率可能会重复,每次测评可能是不同数据集
  • test_data 目录下提供了一份测试数据和答案,仅供参考

测试规则说明

  • 任何原因导致测评没有通过,不会消耗提交次数
  • 选手总耗时是启动进程到执行结束,所以是包括数据加载和查询到总耗时,按耗时排名
  • 选手程序最多运行10分钟
  • 取最好的一次提交结果作为选手上榜成绩

作弊程序判定规则

  • 不能通过 hard code 形式,记录任何测试数据的值在代码中,会视为 hack 代码
  • 选手的程序不能只对一份数据能跑,换一份数据不能跑过的程序都视为 hack 代码
  • 比赛结束会对前10名选手的代码做重判,确保选手代码可以在多份数据上跑通(只验正确性)。重判使用选手最优提交的代码版本,以及一份新的测试数据。
  • 如果选手最优提交的代码版本不存在了,视为无效成绩。

依赖 & 编译说明

  • 只允许使用标准库,不能引入外部依赖,pom文件测评程序编译时会强制覆盖
  • 不允许使用 JNI
  • 不要修改 maven 的pom.xml文件,可能会导致编译失败
  • 不要修改AnalyticDB接口文件,可能会导致编译失败
  • 提交代码前请运行mvn clean package -DskipTests,确保能编译通过
  • META-INFO/services/com.aliyun.adb.contest.spi.AnalyticDB中配置你的实现类

参赛注意事项

  • 不要将自己生成的测试数据文件,提交到自己的代码库,可能会因为拉取代码时间过久而超时
  • 不要打印过多日志,否则可能因为打过多日志而超时,日志只会截取10M上传
  • 添加analyticdb_support为你项目的 reporter,确保测评程序有权限拉你的取代码。
  • 不要将自己的项目设置为 public 在比赛期间
  • 提交代码路径格式,必须是git格式地址,形如:[email protected]:xxx/xxx.git
  • 任何恶意或者作弊行为会被永久禁赛

About

2021年天池数据库性能比赛

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages