前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云数据库TDSQL精英挑战赛Q&A(实时更新)

腾讯云数据库TDSQL精英挑战赛Q&A(实时更新)

原创
作者头像
腾讯云数据库TDSQL
修改2022-03-07 16:32:15
3.8K0
修改2022-03-07 16:32:15
举报

各位选手:

大家好!针对选手提及的问题技术团进行了倾情解答,内容整理如下。当前的解疑答惑已非常全面,如有疑问请仔细查阅以下Q&A,且文档内容也会实时更新给到大家。

考虑比赛的公平性和竞技的意义,赛事过程中涉及到题目解析、具体细节等,技术团不会作答,期望理解。预祝各位选手比赛顺利,加油!

一、参赛规则/违规:

Q:腾讯云账号没实名认证还能参赛吗?要是能参赛,代金券还能补发吗?

A:

1)没有实名认证,将无法领取赛事代金券进行参赛以及初赛的结果提交。

2)实名认证可在初赛截止时间内随时进行,建议不要把实名认证拖到后期才完成。

3)代金券不再补发,前期已多次提醒选手尽快在规定时间内完成实名认证领取代金券。

4)没有实名认证是无法正常提交比赛结果的。

Q:提前把int范围内id和分片的对应关系跑出来保存在文件里,跑测试的时候直接在文件里读id和分片的对应关系,这样算违规吗?

A:算,测跑程序要完成所有的功能,提前计算好对其他人不公平,所以算违规;可以在测跑的时候算,然后再导入。

Q:咨询一个工具使用的问题。最近一直在思考如何提高性能,看到 tdsql load_data工具的介绍,虽然前面已经有帖子回复不能直接使用这个工具,我想再问一下是否可以在压缩包里面携带一下此工具,使用其 mode0 的模式对文件进行一下本地处理呢?

A:不允许。

二、测试/评测:

日志的辅助理解

【重要】评测规则补充说明( 已发赛事公告,赛题说明已配置):

选手将源代码及其依赖代码库(不允许提交编译好的二进制程序和库,如.jar文件,.a文件以及ELF可执行文件等)压缩成zip包提交到评估系统上。

1.参赛选手自己写的代码,必须提交源码。

2.上传代码中如果引用到第三方库(例如java的jar库文件,或者C++的.a文件),需将下载的第三方库文件一起打包到提交的代码里。如果选手对第三方库有改动或重新编译,则需提供源码。

上述第三方库是指开源的,且可下载、可追溯、可验证的库。

3.上传代码里不允许包含ELF可执行文件。

附:文件压缩样例

1)选中文件压缩

2) 压缩后

3)重新命名tdsql.zip

Q:kill failure,maybe run program not exist会在什么情况下发生?

使用C++,可执行文件已经命名为run了,查看日志看到迁移程序也已经开始运行,但是还是出现了kill failure的情况,所以想问一下kill failure会在什么情况下发生呢?

A:kill failure说明run程序没有在运行。

Q:日志是否有大小限制?就是超过这个大小程序也会被kill掉?

A:log限制为100MB,超过这个大小你将看不到这个日志,只能看到小于100MB的日志,程序不会被kill掉。

Q:评测平台上没有 /mnt/datadisk0 这个数据盘,要使用ssd盘做临时文件目录该用哪里?

A:两个盘都是一样的没区别,当前路径就行,空间够用。

Q:测评多少时间超时?

A:评测时间统一限定为100分钟以内,超过时间则判定为失败,失败原因可查阅日志。

Q:测试数据的相对路径应该怎么设置?

A:如果是自己测试的话路径可以自己设置,如果提交主办方评测的话需要获取数据源路径,参照样例demo。

Q:实际测试数据的目录和给出的测试数据的目录结构完全一致吗?

A:目录结构类似,详情参见赛题说明。

Q:代码运行环境支持pip么?

A:不支持。

Q:多个源都是在线上评测的本地环境吗?是否可能来自多个外部服务器?

A:初赛就一个数据源。

Q:make.sh允许对系统环境进行配置吗?可以用apt装依赖吗?比如在不访问网络的情况下,修改/etc/sysctl.conf中的内核参数优化内存管理,或者使用mkdir创建文件,使用mkswap创建swap虚拟内存等(需要CVM机器的root权限)

A:选手代码运行在非root用户下,所以没有root权限。

Q:连接数据库,是选手自己找三方的jar包,还是说官方有提供相应的sdk啊?

A:自己找就可以,另外详细查阅赛题中关于评测规则补充说明。

Q:测试的时候是不会提供程序运行日志给我们来进行相关的分析吗?

A:提交主办方评测系统评测后,成功/失败都会有下载日志。

Q:评测机上可以用maven编译嘛?

A:默认不提供maven编译工具,具体请参见评测规则的补充说明。

Q: java编译,测试机上有啥工具,路径在哪里?

A:java-1.8.0-openjdk,java-1.8.0-openjdk-devel,路径是默认路径。

Q:测试机服务器配置是怎样的?内存、cpu是什么配置?

A:4c/8g 镜像centos7.5,建议和评测环境一致。

Q:数据集没有answer?这样如何检查自己的答案对不对?是否有正确性自测代码提供?

A:已为选手提供测试数据集和自行构建测试环境的实例,选手可以自测,也可以提交答案到大赛官方评测系统,评测成功/失败都有日志反馈。注意:每个战队每天可提交2次评测,成绩需前往PC端“我的成绩”页面查看(登录状态下可查看)。

Q:Key 'id' doesn't exist in table '4' 表4里一定要有id这个索引吗?题目给的sql里没有。

A:测试集和实际数据集存在差异。

Q:实际测试的表结构一定就是和测试数据中的一样吗?还是有可能不同需要根据.sql自行判断?

A:测试集和实际数据集存在差异,表个数相同,表结构存在差异。

Q:测试机器上,有Python的基本库吗?比如sys,os这种最最基本的库,这种库也有打包好吗?

A:有的。

Q:请问下评测环境的TDSQL是什么规格?

A:请认真看赛题,赛题中已有详细说明。目的实例为TDSQL分布式实例,版本为8.0,2个分片,单个规格为2C4G实例,容量为100G。

Q:请问下评测用的tdsql是强同步还是异步呢?

A:强同步。

Q:测试数据都是这样从1开始,逐渐增吗?

A:是。这类问题对解决方案来说没有直接的帮助。

Q:如何查看选手代码添加的日志?

A:选手需要将日志标准输出,评测程序会重定向选手日志到make.log和start.log。


三、CVM/实例

CVM代金券使用指南:https://cloud.tencent.com/developer/article/1922573

Q:是否有CVM提供,什么时候提供?

A:主办方提供的CVM代金券将于12.22-27日之间发放,同时会提供购买指引说明。

Q-1:请问下评测的cvm是哪种机型?

Q-2:可以提供和测试环境相同的服务器环境用于开发嘛?

A:以上Q-1-2问题统一回答--代码运行CVM机器规格为4C8G,与目的数据库实例在同一个可用区,系统盘容量为100G,数据盘容量为100G。

Q:评测测评时cvm的系统镜像id是否可以公开出来?系统里都会预装哪些软件和动态库?

A:主办方的评测cvm使用的系统镜像是centos7.5,系统里预装有赛题中支持的基础语言包,对于C/C++预安装了mysql-devel,gcc4.8.5,对于python预安装了MySQL-python/python-devel/PyMySQL。

Q:测试用的机器到mysql机器的带宽有多大?

A:带宽足够。


四、合并

Q-1:赛题的意思是把来自不同源但库名和表名相同的表合并就行呢,还是要把不同源不同库的同名表全部合并?

Q-2:实际测试数据是两个源呢 还是可能会有多个源 三个或三个以上?

Q-3:测试数据的每个表的主键都不一样啊,合并后主键怎么办?

Q-4:是把所有本地的表格给合并成一个表写入TDSQL里?

Q-5:目前给的测试数据有src_a和src_b两个数据源,每个源下有a-g七个database,每个数据库里都有1-4四个表,按照我们的理解,应该把所有同名表的数据,不管来自哪个数据源哪个database,都按要求汇聚合并到目标库同名表中,是否正确?还是说src_a的和src_b的分别汇聚到不同的目标数据库中?

Q-6:这个合并,涉及到多线程吗?

Q-7:是要合并src_a和src_b的库表数据到目的端吗?

A:以上Q-1-7问题统一回答--合并的是src_a对应的表和src_b对应的表,是两个源中,同个名字库和同个名字的表进行合并。比如src_a中a库的表1和src_b中a库的表1进行合并,src_a中a库的表2和src_b中a库的表2进行合并。具体合并规则可查阅赛题说明。

Q:src_a/src_b还有a-g是固定的?还是只是样例,测评时候需要遍历所有文件?

A:题目中以及测试数据中都是样例说明,初赛只是考察二合一,也就是一定只有两个Source源,每个源下面的数据库不超过7个,每个数据库下面的表不定。

Q:请问题目的目标是这样吗?

A:是的,就是直观意义理解的合并。

Q:输入保证不同源实例中相同的库表结构一样吗?

A:保证的,相同的库表的结构是一致的。


五、主键:

Q:请问没有主键的时候,要不要更新updated_at字段是不是也得看updated_at较新还是旧的?

A:是的。

Q:话说真的必须有主键吗?昨晚测试环境sql未处理直接建的表,然后每个表都批量查过数据,但是没有异常。

A:请以题目中的说明为准,题目未说明的不建议做主观的假定。

Q:没有主键时,“只更新updated_at字段”是什么意思?保留最新?直接覆盖?

A:保留最新。

Q:数据文件里面的数据是乱序的吗,比如具有同样主键值的两条数据,他们在文件中的前后顺序,和updata_at字段的值有没有关系,是不是第二条数据的update_at一定会更大?

A:不一定后者比前者的update_at大,如果题目中没有明确说明的,不可做类似的假设。

Q:实际环境中sql_require_primary_key变量的值是什么?因为其中有不含主键的表。

A:实际环境是OFF,自测环境需要手动修改下。

Q:目前有无主键表,而tdsql要求表必须有主键,权限不够修改参数,无法建立无主键表。

A:自测实例可以在云平台数据库管理->参数设置中自行修改,主办方评测环境已做处理。


六、网络:

Q:网络延迟是多少,我本地测试,延迟300毫秒,挺影响性能,并发28个表,10分钟写了28w,感觉有点问题。

A:网络问题不用考虑。建议使用同可用区的CVM进行测试,网络延时非常低,本地测试不具备参考性。

Q:错误日志提示要在VPC网络访问,这个要怎么访问?

"为保证数据安全,目前暂只提供内网地址,地址有效期为15分钟,过期后请刷新页面重新获取,VPC网络地址请在VPC网络进行访问"这个日志要怎么才能访问啊?另外TDSQL所在服务器可以ssh登录上去吗?

A:可以看自己代码中添加的操作日志,不用看这个。


七、其他

Q:初赛是要开发完整的数据迁移吗?还是某些部分语句的支持就可以了?

A:需要完整的迁移程序。

Q:直接用jdbc 操作数据库吗?mybatis 行吗?这里有sql的接口文档吗?是用腾讯的sdk去操作数据库吗?

A:详细请参见评测规则的补充说明,接口按官方的来就行。

Q:请问下 表名大小写敏感么?

A:不敏感

Q:能否发下官方接口文档?可以用maven去管理包吗

A:可以自己找找,maven没提供。

Q:这可能是什么原因?看start.log都是正常的。evaluate.log日志能把时间加上吗?

A:机器环境测跑下,日志比较清晰了,尝试解决。

Q:evaluate过程是会取set1和set2上所有的数据做校验对吧,即使某表数据只在其中一个set上也是没关系的吗?

A:感觉理解有点偏差,校验只校验最终的结果集。

Q:请问精度丢失问题怎么解决?10.135204300235847这个数字写入到mysql中变成了10.1352

A:这个是选手需要考虑和解决的问题。

Q:示例提供的建表sql文件好像有的并没有指定primary key,如果我们按照它来建表就会报错。如果自行增加主键那又跟原来的数据不符,请官方给出解决方案。 A:目标端是可以建表的,需要想办法。

Q:日志的每列表示什么意思?

start check data consistent

checkSum:Inconsistent data is: e 1 0 172.16.0.105 InnoDB 6652449 21b33d33 19 0 NULL NULL

checkSum:Inconsistent data is: e 1 0 172.16.0.161 InnoDB 6652496 1b8d43f2 6 0 NULL NULL

checkSum:Inconsistent data is: e 2 0 172.16.0.105 InnoDB 6657624 2771d986 19 0 NULL NULL

checkSum:Inconsistent data is: e 2 0 172.16.0.161 InnoDB 6657624 6df50d97 5 0 NULL NULL

A: 这是评估系统的日志,看不懂可以忽略。

Q:请问给定的目的机SQL账号有访问information_schema的SELECT权限吗?

A:目标实例的账号权限在题目中有明确的说明,请仔细审题。

Q:Go mod build异常? go: github.com/go-sql-driver/mysql@v1.6.0: reading github.com/go-sql-driver/mysql/go.mod at revision v1.5.0: unknown revision v1.6.0

评测环境git版本以及go env配置参数能否提供一下,因为此异常已经浪费4此评测机会了!!!

A:没提供访问外网权限不支持使用git,go仅支持1.15版本,go env配置参数都是默认配置。

Q:系统盘和数据盘,怎么区分?好像也没看到给出挂载路径?

A:数据盘挂载路径/mnt/datadisk0。

Q:tdsql-mysql 应该兼容mysql吧,也就是我前期调试使用普通mysql+(比如cpp下 mysql-devel) 也是可以的?

A:可以。

Q:请问能用Rust搞吗?

A:不能。 Q:采用java开发,jdbc驱动是使用tdsql专用的还是mysql自带的? A:mysql自带的就可以,8.0以上。

Q:如果用mysql驱动,是使用哪个版本的?

A:java的话8.0以上。

Q:如果采用mysql v8驱动,jdbc连接串中目标数据库名是必须要指定的,目前题目中start.sh参数中无该参数,如何指定?还是说测试环境数据库名固定,如果固定,是什么?

A:可以指定个MySQL中自带的默认库,没必要一定要在start.sh中添加,可以在你的程序中添加。

Q:目标数据库中,相应的表是否已经建立好,还是说需要自行用.sql文件中的语句去目标数据库建表?

A:需要自行建表。

Q:C++相关的编译环境,可以介绍一下吗?比如cmake 版本、make、GCC/clang版本等。

A:基于选手们反馈需要支持cmake,为了参赛体验更好,技术团已配置,cmake 2.8.12版本,make版本是 3.82,gcc是4.8.5。

Q:CMake2.8.12太老了,已经是8年前的版本了。能否提供高版本CMake? 这样很多库也还是编译不了。例如Mysql Connector, 要求的CMake最低版本也是3.1以上

A:不能,目前只提供了mysql-devel库,请转换一下思路换种方法。

Q:会有赛题解析吗?这个就是把多源数据复制到tdsql里面,然后看谁用时最短吗?

A:比赛过程中不会有赛题详解,赛题的评估规则以发布的赛题说明为主。

Q:源数据文件和结构是在哪里提供?

A:主办方给选手已提供了测试数据集,登录账号即可下载。

Q: java只有1.8么?我看Intel关于pmem手册里写v10才支持pmem,岂不是没法用java?这个要用idea编程?(我有点疑惑,看Intel的手册programming persistent memory里只写了作为heap使用需要10以上,也许不作为heap 1.8就ok了)

A:java只有1.8,pmem是决赛才用。

Q:java语言限制:测评环境有maven吗?可以使用maven来管理依赖吗?

A:默认不提供maven编译工具。

Q:mysql-devel的版本是什么?

A:mariadb-devel-5.5.68。

Q:数据往实例迁移的时候,请问云服务器上库和表是提前建好的嘛?

A:“云服务器”你的意思是实例吧,不是提前建好。

Q:是否有对于SQL文件的格式保证?是否保证一个SQL文件中只包含一个CREATE TABLE语句,且有固定格式?样例里给的都是类似这种格式,请问最终评测数据集会不会有多个CREATE TABLE或者一些reference,auto_increment,constraint之类的语句?

A:SQL文件里面的SQL语句是正确的,在MySQL和TDSQL实例上都可以执行的。文件里面的SQL只包含当前表的建表语句,没有其他内容,具体格式可参考测试数据集。

Q:有make嘛?测试环境什么呢?编译器是什么?版本是什么?

A:make版本是 3.82,测试环境具体请查阅赛题说明详情。

Q:这次比赛允许我们使用load in local file的方式导入吗?

A:目标实例的这个设置是关的,用不了load data。

Q:提供的结构里不是tdsql的创建语句,所以没有shardkey,我创建tdsql时制定shardkey还算一致么?

A:分布式数据库引起的差异不在校验范围之内。

Q:checksum的原理是校验表的.ibd文件吗?

A:两边的所有数据分段读出来做CRC校验,确保两边的数据和结构完全一致,忽略分布式系统带来的差异。

Q:数据精度的问题到底怎么搞? A:浮点数需要以尽可能高的精度写入数据库,MySQL数据库对于浮点数的处理遵循一定的国际标准IEEE-754,但是实现上的读取、展示以及存储可能也会存在一些特殊之处,浮点数的处理也是题目的一个考点,浮点数会以字符串的形式参与校验。

Q:为什么在/mnt目录下无法创建? A:提交的代码在非root用户下,指定路径运行,访问不了其它路径,想要创建文件目录的话,就在当前路径下创建。

Q:TDSQL竞赛需要涉及到TDSQL配置的变更吗?或者说我是否可以改到影响插入性能的数据库变量?

A:不允许TDSQL配置参数的改动,都是默认配置。

Q:评测时,Binlog是要自己想办法获取,还是TDSQL有什么方法可以直接拿到Binlog?

A:TDSQL是目的实例哦,不需要拉取Binlog。

Q:关于PMEM线上公开课的学习。

A:录制文件:https://meeting.tencent.com/v2/cloud-record/share?id=ec82d26d-bf99-430a-ad84-a7f875489b55&from=3

访问密码:ABY6 PPT文件:https://doc.weixin.qq.com/slide/p3_AIcAbgbdAFw5zUbzTkkTGmkYoxMZi

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
分布式数据库 TDSQL
分布式数据库(Tencent Distributed SQL,以下简称 TDSQL)是腾讯打造的一款企业级数据库产品,具备强一致高可用、全球部署架构、高 SQL 兼容度、分布式水平扩展、高性能、完整的分布式事务支持、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档