关注公众号回复TDSQL认证获取更多资源

  1. TDSQL(mysql)下列关于主键错误的是().

    A. InnoDB表必须指定主键
    B. 尽量游免更新主键字段
    C. 如果存在多个唯一健,考虑最常用的唯一键作为主键
    D. 主键值可以为空

    D. 主键值不可以为空,是错误的,应该修改为主键值不允许为空。

    在TDSQL中,主键是数据库表中的一个特殊字段,它的值必须是唯一的,且不允许为空,用来唯一标识一条记录。因此,选项D是错误的。选项A是正确的,在使用InnoDB存储引擎的表中,必须指定主键。选项B是正确的,尽量避免对主键字段进行更新操作,以减少索引维护的成本。选项C是合理的建议,根据最常用的唯一键作为主键可以提高查询效率和数据存储的规范性。

  2. 在mysql 中innodb引擎表T1,执行update t1 set a=2 where id =1;语句,id列有索引,下面描述正确的是().
    A. 加表锁
    B. 不加锁
    C. 加行锁
    D. 加字段锁

    C. 加行锁。

    在MySQL中,InnoDB引擎支持行级锁,当执行类似 update t1 set a=2 where id =1 的语句时,根据id列的索引,InnoDB引擎会为该行加上行锁。行锁是最细粒度的锁,只会锁定执行语句中涉及到的行,而不是整张表。这样可以避免不必要的锁竞争,提高并发性能。
    如果涉及到多行数据的更新,InnoDB引擎会根据语句的执行计划,采用不同的锁策略。如果更新的行数少于等于当前隔离级别下的自增长值,那么会采用行锁;否则会采用表锁,避免出现死锁和性能下降的问题。因此,在具体的开发中需要根据实际情况进行测试和优化。

  3. 负责mysqld 进程存活检查并进行拉起的进程是().
    A. Oc agent
    B. Scheduer.
    C. manager
    D. hdfs

    B. Scheduler。

    MySQL是一个长时间运行的进程,如果因为某种原因意外退出,需要及时拉起,以保证服务的可用性。在腾讯云数据库TDSQL中,负责mysqld进程存活检查并进行拉起的进程是Scheduler。Scheduler是TDSQL的一个重要组件,它负责管理MySQL实例的启动、停止、重启、配置变更等操作,并通过监控Agent对MySQL进程进行存活检查,一旦发现MySQL进程异常退出,就会及时拉起,以保证服务的高可用性和可靠性。选项A的Oc agent是腾讯云的一种云原生容器服务,用于应用的容器化部署;选项C的manager和选项D的hdfs都与MySQL进程的运行管理没有直接的联系。

  4. 使用mysql客户端透传登方式录后,可以查看库中有哪些表是分表的语句是().
    A. /*proxy*/show table with shardkey;
    B. show shardkey tables;
    C. /*proxy*/show tables;
    D. /*proxy*/show shardkey tables;

    A. /*proxy*/show table with shardkey;

    当使用MySQL客户端透传登方式登录到腾讯云数据库TDSQL分布式实例时,需要在SQL语句前加上注释/*proxy*/,以便将该SQL语句透传到分片节点执行。查看分表信息的语句是show table with shardkey;,加上透传登注释后即为/*proxy*/show table with shardkey;。该语句将返回数据库中所有分表的信息,包括表名、鉴别键类型、分表数量及分表的节点信息等。选项B和D的语法有误;选项C返回了所有表的信息,而不是分表的信息。

  5. TDSQL 修改字段类型命令正确的是().
    A. alter table t1 alter e varchar(20);
    B. alter table t1 modify e varchar(30);
    C. alter table t1.e modify varchar(30);
    D. alter table t1.e alter varchar(30);

    B. alter table t1 modify e varchar(30);

    在腾讯云数据库TDSQL中,要修改表字段的数据类型,可以使用ALTER TABLE语句。正确的语法是alter table 表名 modify 字段名 字段类型,即选项B。该语句将修改t1表中e字段的类型为varchar(30)。选项A的语法错误,缺少modify关键字;选项C语法错误,应该为alter table t1 modify e varchar(30);选项D的语法错误,应该为alter table t1 modify e varchar(30)

  6. 使用mysql客户端登录TDSQL时,加哪个参数可以使用透传功能?
    A. -a
    B. -b
    C. -c
    D. -d

    C. -c

    在使用MySQL客户端登录腾讯云数据库TDSQL时,如果要使用透传功能,需要在登录命令中添加-c参数。使用该参数后,在SQL语句中添加/*proxy*/注释,即可将该SQL语句透传给后端节点执行。例如,使用以下命令登录MySQL客户端,可以开启透传功能:mysql -h hostname -u user -p -P port -c
    其中,hostname是TDSQL实例的内网地址,user是数据库用户名,port是数据库端口,添加了-c参数后,就可以在SQL语句前添加/*proxy*/注释,实现透传功能。

  7. 当检测到死锁时,TDSQL InnoDB 存储引擎如何处理它们?
    A. 两个受影响的事务都将回滚。
    B. 受职响的事务等待inodb lock wait 超时,然后回滚。
    C. 一个受影响的事务将回滚,另一个允许继续.
    D. 事务隔离级别决定回滚哪个事务.

    C. 一个受影响的事务将回滚,另一个允许继续.

    答案解释如下:
    A. 两个受影响的事务都将回滚
    这个选项是错误的。当检测到死锁时,TDSQL InnoDB 存储引擎只需要选择一个牺牲者回滚,不需要把所有事务都回滚。回滚所有事务会导致所有事务的更改都被撤销,可能会导致严重的数据一致性问题。
    B. 受影响的事务等待 InnoDB lock wait 超时,然后回滚
    这个选项也是错误的。等待 InnoDB lock wait 超时的事务并不知道它是在等待死锁的解决。等待超时后可能会自行回滚事务,但如果其他事务继续增加锁等待,则问题仍将存在。
    D. 事务隔离级别决定回滚哪个事务
    这个选项是错误的。事务隔离级别影响并发操作的方式,但不会决定哪个事务应该被回滚。在 TDSQL 中,当 InnoDB 检测到死锁时,根据其自己的规则选择牺牲者回滚事务,而不考虑事务隔离级别。

  8. 存在表T1,有a,b,c三个字段,c 字段有普通索引,下面查询可以使用到索引的是().
    A. select * from t1 where b=1 and c=2
    B. select * from t1 where c+1=2
    C. select * from t1 where c like %2
    D. select * from t1 where c!=2

    A. select * from t1 where b=1 and c=2

    B. select * from t1 where c+1=2
    这个查询中的 c + 1 表达式不能使用 c 列上的索引,因为这个表达式不是一个普通的列名。MySQL 在查询解析时,无法直接判断 c+1 表达式的结果。如果你想在查询中使用到 c 列上的索引,可以考虑修改查询条件或者采用 MySQL 的可计算列技术来实现。
    C. select * from t1 where c like %2
    像前面所说的,因为 % 通配符是以 c 列值开头,且在查询计划时无法确定符合条件的数据行,因此不能使用 c 列上的索引。
    D. select * from t1 where c!=2
    在这个查询中,该条件不能使用 c 列上的普通索引。这是因为对于索引来说,无法直接响应「不等于」操作符。如果你需要使用不等于查询,并且期望内部使用到索引来处理 WHERE 从句,你可以考虑使用覆盖索引或是使用聚簇索引。

  9. TDSQL(MySQL版)关于强同步策略描述正确的是?
    A. 主机不等从机应答直接返客户端成功
    B. 主机等待多数从机应答再返回客户端成功
    C. 主机等待至少一台从机应答成功后才返回客户端成功
    D. 主机等待所有从机应答成功后才返回客户端成功

    D. 主机等待所有从机应答成功后才返回客户端成功

    强同步策略需要确保每个从机节点都写入成功后,才返回给客户端成功,这就要求所有从机节点都要可用。虽然强同步策略能够提供最高的数据可靠性,但由于要等待所有从机节点写入成功后才能返回客户端成功,所以会增加写入时延,并且在高并发写入场景下可能会出现瓶颈,因此,应根据实际需求选择合适的同步策略。

  10. MysQL查询哪些进程正在执行().
    A. show process;
    B. show processlist;
    C. list process;
    D. list processe;

    B. show processlist;

  11. TDSQL(MySQL版)分布式支持哪种类型的表?
    A. 分表
    B. 单表
    C. 广播表
    D. 以上都支持

    D. 以上都支持

    A. 分表是指将一个表的数据按照某种方式拆分成多个表,分布到多个节点上。不同的节点上存储同一张表的不同分片,可以水平扩展表的存储和查询性能。TDSQL(MySQL版)支持分片表。
    B. 单表是指一个库中只有一张表,这种表类型不涉及到分布式问题。任何一种数据库都支持单表。
    C. 广播表是指将一个表的数据复制到所有的节点中,每个节点都有该表的完整数据。广播表主要用于数据量较小、对查询性能要求较高、且需要高可靠性的场景。TDSQL(MySQL版)同样支持广播表。

  12. 查看InnoDB内存参数设置的命今是().
    A. show variables like "innodb%;
    B. show parameter like "innodb%;
    C. list variables like "innodb%;
    D. list parameter like inodb%;

    A. show variables like "innodb%;

  13. 关于mysql 主从同步中Slave_IO_Running线程描述不正确的是.
    A. 可以判断I/O线程是否被启动,并成功地连接到主服务器上。
    B. 备库回放relay log的线程
    C. 存在备库上面的线程
    D. 接收到主库binlog 并写入中继日志的线程

    B. 备库回放relay log的线程

    备库回放 relay log 的线程是 Slave SQL Running 线程完成的。Slave SQL Running 线程是负责执行中继日志中的事件,将这些事件应用到备库上的线程,因此 B 选项描述是错误的。

  14. TDSQL(MySQL版)的路由信息是保存在哪里的?
    A. 数据库中
    B. Scheduler
    C. Zookeper
    D. oss

    C. Zookeper

    ZooKeeper 是一个分布式的、开放源代码的分布式应用程序协调服务,它是 TDSQL(MySQL版)中的重要组件,用于保存和管理集群中的元数据信息和路由信息,包括数据库实例的地址、分片和拆分等信息。

  15. TDSQL(MySQL版)分布式实例中哪些表只存在第一个set上?
    A. 单表
    B. 分表
    C. 广播表
    D. 所有表

    A. 单表

  16. TDSQL中自增字段描述正确的是().
    A. TDSQL只保证在单个分片内部递增
    B. TDSQL 可以保证在全局递增,但不是单调递增
    C. TDSQL不支持自增字段
    D. TDSQL 可以保证在全局严格单调递增

    B. TDSQL 可以保证在全局递增,但不是单调递增

    自增字段是一种在插入记录时自动递增的字段。在 TDSQL 中,自增字段可以使用 AUTO_INCREMENT 关键字来定义。当插入记录时,TDSQL 会为自增字段赋一个新值,以便保证每条记录都有唯一的值。
    在 TDSQL 中,自增字段的递增方式取决于表的分片设置。如果表被水平分片到多个节点上,那么自增字段的递增方式可能是局部递增的,也就是说,在每个节点上自增字段的值都是递增的,但是不同节点上的自增字段值可能会重复。如果表没有被分片或者只被分片到一个节点上,那么自增字段的递增方式将是全局递增的。
    需要注意的是,在 TDSQL 中,自增字段的递增方式并不一定是单调递增的。这是因为在分片环境下,不同节点上自增字段的值可能会有交错。然而,TDSQL 会保证自增字段在全局上是递增的,也就是说,每个自增字段的值都比之前插入的记录的自增字段的值大。

  17. 关于TDSQL 广播表说法正确的是()?
    A. 广播表可以将表数据均匀拆分到各个set
    B. 广播表一般适合数据量较大的表
    C. 广播表适合用于频繁更新的表
    D. 广播表适用于更新较少的小表

    D. 广播表适用于更新较少的小表

    TDSQL 的广播表是将一个表完全复制到集群的所有 Set 上。数据拷贝是在数据变更时同步进行的,因此对数据的读写操作在所有 Set 上都是相同的。由于广播表在所有 Set 上都有完整副本,所以广播表能够提供非常高的查询性能,对于 join、group by 等操作尤为显著。
    由于广播表拷贝的是完整的数据,所以其适用场景是数据量较小、更新较少的表,如一些配置表、元数据表等。这些表通常不会有太多的数据变动,可以在集群启动时快速拷贝所有数据,然后在之后的运行中进行读取操作。

  18. 查看MySQL服务进程是存在?
    A. ps -ef|grep 端口号
    B. fs -ef|grep 端口号
    C. ns-ef|grep 端口号
    D. ys-ef|grep 端口号

    A. ps -ef|grep 端口号

    ps命令可以列出当前所有进程的信息,包括进程ID(PID)、进程状态、运行时间等信息。通过grep命令可以过滤出包含指定端口号的进程。因此,在Linux或Unix系统中,可以通过ps -ef|grep 端口号命令来查看MySQL服务进程是否存在。

  19. TDSQL(MySQL)中主备数据一致性检查的工具是?
    A. pt-online-schema-change
    B. pt-pmp
    C. pt-table-checksum
    D. pt-mysql-summary

    C. pt-table-checksum

    pt-table-checksum是Percona Toolkit中的一个工具,可以检查MySQL主库和从库之间的数据一致性。它通过对比主库和从库的数据行数、校验和等信息,来确定两个库之间是否存在数据不一致的情况。如果发现不一致,就可以通过其他工具(例如pt-table-sync)来修复数据。因此,pt-table-checksum对于保证TDSQL(MySQL)主从数据一致性非常有用。

  20. 下面哪个命令可以通过透传的方式查看tdsql 集群的消息().
    A. show status;
    B. /*proxy*/show status
    C. /*proxy*/cluster status;
    D. /*cluster*/show status;

    B. /*proxy*/show status