zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

腾讯云数据库TDSQL精英挑战赛--Q&A

2023-03-14 22:54:29 时间

各位关注和已报名参加【2021·Change SQL-腾讯云数据库TDSQL精英挑战赛】的小伙伴们: 大家好!目前大赛报名还在火热进行中,对于大家关心和提出的问题,大赛主办方将以Q&A的形式,定期更新给到大家。

若以下回答未能满足您的需求,或您有其他关注的问题,欢迎在【腾讯云+社区】云+竞赛的讨论区留言,我们将第一时间为您答疑解惑,感谢大家对于大赛的给力支持。


一、关于报名

Q:找不到队友组队,可以个人报名参赛吗?

A:主办方建议组队参赛,可以发挥团战的优势,当然个人参赛也是可以的。 Q:参赛报名会有赛前指导吗?

A:11月18日、11月25日主办方会进行数据库技术培训,敬请关注【腾讯云+社区-沙龙】或CSDN“高校俱乐部”平台直播。

Q:参赛需要学什么基本技能呢?

A:有基础的编程能力,对数据库有了解的都可以参赛,近期可以关注数据库迁移相关的知识点。

Q、什么时候发放比赛用的代金券?

A、报名结束到初赛赛题公布期间。


二、关于赛题

Q:语言有什么限制?

A:语言涉及go 1.15、java 8 、c、 c++ 11 、python3。

Q:大赛主要考什么?初赛和决赛是不同性质的题目吗?需要提前做什么准备?

A:本次大赛主要聚焦在数据库迁移方向,初赛、决赛的赛题是同一个方向,进阶性质的,每个赛段考察点不同。赛前可以提前了解关于数据库迁移相关的知识。

Q:这次是TDSQL PG版本,还是TDSQL MySQL版本?

A:TDSQL MySQL版本。

Q:如果分布式数据库自己实现一致性协议而不用zk会不会性能更高?

A:题目本身不涉及到分布式一致性协议的设计和实现,目标端使用TDSQL分布式数据库。

Q:如果使用到内存,那么还是跑在单独的服务器上最好?

A:选手提供的代码编译后的程序运行在独立的服务器上,是与数据库实例所在的机器分开的。

Q:题目难度有多大?本科阶段适合参加吗?

A:大赛面向所有人员开放,当然不同阶段的人技术水平不一样,可以通过加强学习的方式来应对本次比赛。

Q:私有云也有吗?

A:本次大赛主要针对公有云场景。

Q:1、最终是要实现一个中间件负责数据迁移到TDSQL,还是实现一个类TDSQL本身也进行存储?2、比赛用的TDSQL是innodb还是ydstore sharedkey hash算法是什么?本地代码可以自己计算么?透传sql方式用链接库怎么做?直接前面加注释?

A:关于赛题、数据、评测等详情,敬请期待2021年12月16日【腾讯云+社区】云+竞赛平台上的赛题发布。

Q:迁移是多源迁移是吗?

A:是的,是多源合一的场景。

Q:有宕机场景吗?

A:不排除有宕机场景,参赛选手需要考虑这种灾难场景。 Q:初赛是要开发完整的数据迁移吗?还是某些部分语句的支持就可以了? A:需要完整的迁移程序。

Q:1、迁移程序需要是可以跑在源端,也可以跑在目标端,也可以跑在中间服务器上是吗? 2、数据迁移是在一台机器还是原数据和目标数据在不同机器上? A:迁移程序跑在中间的服务器上,源端、目的端、中间服务器是分开的,但都在云上同一个可用区。

Q:强同步会不会有些慢?

A:TDSQL针对强同步功能做了性能优化。

Q:赛前有模拟题吗?

A:抱歉,本次大赛没有赛前模拟题。

Q:外网登陆的话权限会受到一定的限制吗?

A:选手使用的CVM实例和数据库都不限制外网访问,可以根据自己的实际需要访问实例。但是评估环境中,选手提交的代码不能访问外网。

Q:数据库比赛中的违规行为有哪些?

A:可查阅云+社区竞赛平台发布的违规说明https://cloud.tencent.com/developer/competition/introduction/10027


三、关于评测

Q:比赛有性能指标吗?

A:有的,在正确性验证通过的情况下,对性能评测阶段整体计时,根据总用时从低到高进行排名(用时越短排名越靠前)。 Q:有什么评价指标,来评价软件的优劣?

A:大赛主办方会提供统一的评测系统,关于评测等详情,敬请期待2021年12月16日【云+社区】云+竞赛平台上的赛题发布。

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

Q:C只有glibc算标准库?其他的都要源码?

A:可以使用。

Q:部署脚本可以yum安装依赖么?

A:不能yum安装。

Q:java需要打包所有jdk之外的库的源码? A:是的。

Q:测试环境和评测环境能具体讲下吗? A:关于测试环境,主要是为了给到选手更好的参赛体验,大赛主办方会安排参赛团队拿到真实的实例做体验和验证赛题答案。另外评测环境主要是为了公平公正考虑,主办方会搭建统一的评测系统,调取选手的代码文件运行后得出成绩并排名。


四、工具

Q:大赛需要用到什么数据库软件?

A:不依赖于具体的软件,选手主要关注代码和依赖,大赛所需的云上资源会通过发放代金券的形式提供给选手。

Q:数据迁移,需要做一致性校验工具吗?

A:选手不需要做这个工具,但需要保证数据的正确性,迁移前后的数据一致性作为比赛结果的评分项。


五、intel相关

Q:这次和intel合作,需要使用到的是intel的基础硬件还是在迁移过程中,要使用到intel的某些功能?

A:程序运行环境在intel的基础硬件上,选手可以利用硬件的特性提升程序运行的性能。

Q:intel内存也是你们提供吗?在云主机上?

A:由大赛主办方提供,赛题公布时会配有使用说明和要求。

Q:持久内存是不是就不需要将log写到磁盘上去了?

A:比赛选手可以根据自己的调优结果来选择log的持久化方式。

Q:测试机器是intel带NVMe硬件的环境吗?

A:本次赛题使用的机器不涵盖。

Q:现在选的是高IO版,后面是不是要选成 PMEM的实例?

A:PMEM实例只会在决赛使用到。

Q:比赛会需要修改TDSQL的内核吗?

A:不需要。

Q:比赛需要自己写网络库吗?

A:不需要,只要是源码形式提供的代码编译一起运行就好。

Q:持久内存当作ssd使用的话,稳定性怎么样?内存不是不稳定存储吗?

A:持久内存的稳定性很好,其存储介质的特性是可持久化的,和DRAM以电容维持刷新所是有本质的区别。并且在持久内存内部还有ECC校验机制。

Q:持久内存和ssd存储有什么区别吗?

A:持久内存的主要特性包括可字节访问,就地写入,其延迟比普通的SSD低很多,这和Nand SSD为代表的块设备是不同的。

Q: 新一代的产品,执行完clwb类似的指令,还会执行sfence保证顺序吗?

A:现有X86指令架构下,CLWB和CLFLUSHOPT指令执行后都必须使用SFENCE。指令详细信息可参见英特尔64和32位软件架构开发人员手册:https://software.intel.com/en-us/articles/intel-sdm

Q:带文件系统的访问和裸设备的访问速率差别大吗?带文件系统的访问有什么特别的优势吗?

A:fsdax可以有2种访问的方式:一种是通过文件系统API访问,一种是通过mmap的方式。其中mmap方式和devdax的访问速率是没有差别的。

在文件系统下新创建文件后有zero-out的操作。文件系统本身可以帮助应用管理元数据的操作。在devdax模式下需要应用去管理相应的元数据。因此,使用哪种模式可以根据需求来决定。

Q:如果包管理器找不到的话,手动编译的时候,还有其他的依赖需要装吗?

A:ndctl和PMDK都是有git地址的,在readme里面都列举了所需要的依赖。较新的包管理器基本都会包括这些依赖。如果包管理器没有,可以手动编译安装。PMDK建议从源码安装较新的版本。以下列出了持久内存相关的常用源码库:

https://pmem.io/ndctl/

https://github.com/pmem/pmdk

https://github.com/memkind/memkind

https://github.com/pmem/llpl

Q:请问我用pmem_map_file打开一个已经存在的比较大的文件,报错了,是什么原因导致的呢?打开较小的文件没事。

A:需要根据具体情况来确认问题在哪里,特别是flag和mapped_penp参数是否设置正确。以下给出了pmem_map_file的函数原型。更多的资料请参考pmem.io/pmdk/libpmem/或者github的PMDK库。

void *pmem_map_file(const char *path, size_t len, int flags, mode_t mode, size_t *mapped_lenp, int *is_pmemp)

Q:pmem当文件系统访问,读写时候不需要4K对齐么?

A:持久内存的特性之一是可字节寻址访问,因此可以更细粒度访问。

Q:libpmemobj不用事务时,性能和libpmem有差异么?

A:libpmem的操作是最底层和粒度最细的,因此效率是最高的。Libpmemobj使用了对象的数据结构,开销要略高于libpmem。

Q:持久内存能不能代替当前所有数据库写wal文件所在的磁盘 ,持久内存的读写速度与磁盘或ssd的性能对比有吗?

A:wal理论上都是可以放在持久内存上,方法可以是直接文件读写和使用mmap的方式读写。在实际应用中需要根据场景中wal在应用中的开销比例评估所带来的性能收益。

持久内存的延迟在几百纳秒级,Nand SSD的延迟在几十微秒以上。


六、技术侧

Q:mysql-conector怎么执行投传sql? A:可以参照腾讯云TDSQL官方开发手册,或查阅:https://cloud.tencent.com/document/product/557/47559

Q:TDSQL的主备库支持一致性,是极端情况下舍弃高可用选择一致性吗?

A:在1主2备的架构下,默认保证优先数据的一致性。但在极端情况且业务可以接受的程度,可以选则可用性。

Q:主库和从库的关系?是不是从库为主库的备份,一主三从就是三个备份?

A:从库实时同步主库的数据。是的。

Q:如果发生主从切换,TDSQL主从的event怎么处理的?

A:每个节点上agent会判断当前主的主备节点,来决定event的状态。

Q:是主和从节点都分片吗?

A:每个分片都是由用户购买时指定的1主X从构成的,一个TDSQL实例由这样的多个分片组成。

Q:分片是不是物理存储的位置?如果是三个分片,三个分片和一个分片使用或者存储上的区别是什么?

A:TDSQL会自动分库分表,一个分片存储一张表做水平拆分后的一部分数据,如果有三个分片,那么每个分片就存储三分之一的数据。每个分片都由购买时指定的1主X备组成。附TDSQL产品文档入口:https://cloud.tencent.com/document/product/557/7700

Q:分片可以跨可用区么?若可以跨可用区,距离可以达到多少公里?

A:可以跨可用区。同城在百公里内。

Q:分片分表的区别?

A:TDSQL分片功能是自动实现的,每个分片上保存整张表一部分数据,接入引擎会将用户的请求自动路由到对应的分片上,从而实现水平分表。这个分表对业务是透明的,业务只需操作一个表即可,降低业务开发复杂性。

Q:计算和存储分离之后,tps和qps如何提升100%?

A:这个问题还要针对具体的场景或者更细化的背景说明做详细解答,TDSQL实例严格来说不能算作存储计算分离的架构。

Q:断电会丢数据吗?

A:不会丢数据,可以配置参数确保日志数据落盘。

Q:TDSQL数据库可以支持千亿级数据吗?

A:支持,万亿行数据毫秒级存取,可以参考文档进一步了解产品:https://cloud.tencent.com/document/product/557/8763

Q:源端是SQL文件还是MySQL数据库?

A:赛题公布时会在赛题中做详细的说明。

Q:建表语句中有外键怎么处理?

A:可以先屏蔽外键约束,建好表之后,再打开。

Q:分布式数据库,和集中数据库挂载大磁盘的比较的优缺点是什么?

A:分布式数据库,可以自由选择容灾级别及可用区,单分片故障对整体请求影响较小。但在做多分片数据聚合等分析场景会消耗更多资源。

Q:多中心异地一致性是通过zk实现的吗?

A:如果是同城多中心,数据的一致性是通过MySQL的同步保证的。如果跨城容灾的话,需要走跨实例的异步容灾方式。

Q:可以允许全局group by操作吗?

A:可以做,数据量大的时候会比较消耗资源。