news 2026/6/21 6:59:10

对特定业务场景的数据库

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对特定业务场景的数据库

【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless实践之路


TDSQL是腾讯云自研企业级分布式数据库,旗下涵盖金融级分布式、云原生、分析型等多引擎融合的完整数据库产品体系,提供业界领先的金融级高可用、计算存储分离、数据仓库、企业级安全等能力,同时具备智能运维平台、Serverless版本等完善的产品服务体系。

TDSQL,100%兼容MySQL和PostgreSQL,包含三大产品系列,分别为分析型数据库TDSQL-A(Tencent Analytical Database)、云原生数据库TDSQL-C (Tencent CloudNative Database)和分布式数据库TDSQL(Tencent DistributedDatabase),全方位满足各行各业的业务需求。

云原生数据库TDSQL-C MySQL,采用计算和存储分离(日志即数据库)的 Shared Storage 架构,融合了传统数据库、云计算与新硬件技术的优势,100%兼容 MySQL 等开源数据库,实现了超百万级 QPS 的吞吐,超百 TB 的海量分布式智能存储,能够很好地支撑大数据量的归档存储和高效查询性能。


三、TDSQL-C MySQL Serverless版本:

Serverless 服务是腾讯云自研的新一代云原生关系型数据库 TDSQL-C MySQL 版的无服务器架构版,是全 Serverless 架构的云原生数据库。Serverless 服务支持按实际计算和存储资源使用量收取费用,不用不付费。

但是我们切换Serverless来看一下,是按小时来收费的,不就是按量收费吗?这样是不是很符合我们的场景呢?

接下来的几个选项:

  • 数据库版本,有5.7、有8.0,可以符合大部分的需求场景
  • 算力配置,CCU(TDSQL-C Compute Unit)为 Serverless 的计算计费单位,一个 CCU 近似等于1个 CPU 和 2GB 内存的计算资源,每个计费周期的 CCU 使用数量为:数据库所使用的 CPU 核数 与 内存大小的1/2 二者中取最大值。
  • 自动启停,数据库在该时间内没有连接和 CPU 使用时,将自动暂停,暂停后计算不计费,存储仍然按实际使用量计费。
  • 存储资源包,通过资源包,可以提前预留资源,而且,相对于按量付费方式,资源包可以帮助节省更多成本,资源包的购买容量越大,有效期越长,越划算。

我们可以看到存储的资源包也是比较便宜的,相对于传统MySQL的实例的空间要划算多了。

创建完数据库集群实例后,可以看到控制台显示。

也可以查看数据库实例运行很多指标的监控,可以让我们及时查看数据库实例的一些症状,提前做一些预防措施。

  • CPU使用率
  • 内存使用率
  • 内存使用量
  • 存储使用率
  • 存储使用量
  • 数据表空间使用量
  • 临时表空间使用量
  • undo表空间使用量
  • CCU
  • 每秒发送客户端流量
  • 每秒接收客户端流量

创建一个账号管理,方便用来管理账号。

创建一个数据库,用来存储数据管理。

其它的选项暂时没用到,就不仔细介绍一下了。


五、官方手册体验:

通过官方提供的手册,很快我们就完成了TDSQL-C MySQL的实际操作,问答系统手册案例也比较简单,与平时所使用的 Sql 语法差不多一致,基本上没有什么学习成本,开箱即用,可以快速上手,同时,也欢迎大家一起探索云原生数据库 TDSQL-C Serverless 更多的功能,为工作中赋能增效降本!

以下为官方手册对着的效果。


六、测评特性:

TDSQL-C MySQL 版提供 Serverless 服务以满足企业对特定业务场景的数据库服务要求,助力企业降本增效。

1. 资源扩缩范围(CCU)

可调整 CCU 弹性扩缩容的范围。Serverless 集群会在该范围内根据实际业务压力自动增加或减少 CCU。

2. 弹性策略

Serverless 集群会持续监控用户的 CPU、内存等 workload 负载情况,根据一定的规则触发自动扩缩容策略。

3. 自动启停

Serverless 服务支持自定义实例自动暂停时间,无连接时实例会自动暂停。当有任务连接接入时,实例会秒级无间断自动唤醒。


七、自动启停评测:

先将服务器进行关闭。

改造代码,并且关掉数据库服务,测试看看能不能进行自动启停。

// 获取前10名分数,用于跑马灯效果router.post('/api/getScores',async(ctx,next)=>{console.log('获取前10名分数信息日志')constdate1=newDate();letsql='SELECT * FROM `data_scores` order by id desc limit 10';const[results]=awaitconnection.execute(sql);constdate2=newDate();constdate3=date2.getTime()-date1.getTime()console.log("查询语句的开始时间",date1);console.log("\n查询语句的结束时间",date2);console.log("\n查询语句的相差时间",date3);ctx.response.type='application/json';ctx.response.body={"code":'200',"message":'成功',"data":results};});


这里的相差的时间,为8989毫秒,相差8秒多,而且服务器确实自动唤起了,感觉时间还是不太准确。

只有重启代码才能自动唤起链接,想想一下其它方案,使用mysql命令进行登录。

在 Linux 命令行中,可以使用 time 命令来统计命令执行时间。time 命令可以测量指定命令的执行时间、CPU 使用率、系统调用等信息,并将这些信息输出到终端上。

执行完命令后,终端将输出三个时间值,分别是:

  • 实际时间(real time):指命令从开始到结束的实际耗时。
  • 用户 CPU 时间(user time):指命令在用户态运行的 CPU 时间,不包括系统调用时间。- 系统 CPU 时间(system time):指命令在内核态运行的 CPU 时间,包括系统调用时间。
time mysql-h gz-cynosdbmysql-grp-6euxe8df.sql.tencentcdb.com-P27859-u root-pTestSchool123-e"show status;"

可以看到real显示执行子3秒,表示在服务器暂停状态下,在3秒中,完成了mysql的连接,当然,这里也有网络的原因,但是说明服务器在默认设置的时间内,没有使用,就会停用。有连接进来的时候,就会马上几秒钟就能连接。


八、弹性策略:

mysqlslap 是 MySQL 官方自带的一个压力测试工具。它通过模拟多个并发客户端访问 MySQL 来执行压力测试,通过结果信息可以了解数据库的性能状况。

mysqlslap 是系统运维和 DBA 人员应该掌握一些常见的压力测试工具之一,其主要工作场景就是对数据库服务器做基准测试。

比如:服务器的硬件资源能够支持多大的访问压力呢?优化了操作系统的内核参数后,是否提升了性能?调整了 MySQL 配置参数后,对性能有多少影响?

mysqlslap-h gz-cynosdbmysql-grp-6euxe8df.sql.tencentcdb.com-P27859-uroot-p TestSchool123--concurrency=200--number-of-queries=1000--create-schema=test_school--query=``"INSERT INTO data_scores (\`name\`, \`score\`) VALUES ('david', 30)"--iterations=300

–concurrency=200:指定同时有 200 个客户端连接
–number-of-queries=1000:指定总的测试查询次数(并发客户端数 * 每个客户端的查询次数),这样本样例平均每个客户端查询 10 次

运行结果如下:
Average number of seconds to run all queries:运行所有语句的平均秒数
Minimum number of seconds to run all queries:运行所有语句的最小秒数
Maximum number of seconds to run all queries:运行所有语句的最大秒数
Number of clients running queries:客户端数量
Average number of queries per client:每个客户端运行查询的平均数

如下为CCU的变化示意图,可以看到CCU从0.2到0.6再到0.2的一个变化,用多少就会弹性多少。

CPU使用率阤是从0%到16%,再到0%。

内存的使用率也是一样的,从0%,到2.4%,再到3.63%。

Serverless 服务的弹性策略一开始会根据用户购买时选择的容量范围,将 CPU、内存资源限制到最大规格,极大程度降低因 CPU 和内存扩容带来的时间影响和使用限制。当集群触发到自动弹性的负载阈值后,Buffer pool 会根据监控提前进行分钟级调整。在这个方案下用户使用数据库可以无感知进行 CPU 扩容。


九、Serverless 服务架构:

Serverless 服务是腾讯云自研的新一代云原生关系型数据库 TDSQL-C MySQL 版的无服务器架构版,是全 Serverless 架构的云原生数据库。

  • 按需启动,不需要时可关闭。
  • 自动扩展/收缩。
  • 缩放对应用程序无影响。

连接不断转发请求能力:

当有连接访问时,系统会秒级自动启动处于暂停状态的数据库,用户不需设置重连机制。

TDSQL-C MySQL 版的接入层增加了一个恢复感知器(简称 perceptron)的模块来实现请求转发,perceptron 在和客户端握手之后,不会使用户端到集群的连接断连。恢复集群后,与 TDSQL-C MySQL 版握手,后续转发四层报文。

整体流程设计采用了两个挑战随机数进行鉴权,以实现中继模块 perceptron 不存储用户名密码的情况下也可以完成用户名密码验证,保证了用户密码的安全性,也不会引入存储密码不一致的问题。


十、微信云托管:

微信云托管 是微信团队提供的以云原生为基础的,免运维、高可用服务上云解决方案,无需服务器,1分钟即可部署小程序/公众号服务端。

微信云托管支持目前绝大多数语言/框架项目,开发者可以从服务器平滑迁移;并且微信云托管的自动运维和扩缩容特性,无需开发者关心服务的可用性,专注于业务,极大节省人力和服务资源成本。

同时,微信云托管还集成持续交付部署,DevOps自动化,安全鉴权等众多能力,致力于帮助没有深层运维经验的业务开发者和研发团队,用最低的成本,打造出稳定性高,安全性强的后端服务。


1. 流量不稳定触发型业务:

流量不稳定服务闲时资源利用率低造成资源浪费。 接入微信云托管可按实时流量自动扩缩容,突发场景下可在20s内快速扩容支持业务运行,1小时内无流量实例副本数支持缩容到0,做到无流量时无成本消耗。 同时微信云托管按实际用量计费大大降低成本,再结合MySQL数据库、对象存储等服务也可以同时降低数据库存储的使用成本。



2. 费用预估对比:

费用预估均基于刊例价,不考虑折扣、特惠活动、资源包、优惠券等。可理解为理论上的最高价。

Q:如何理解CPU计费单位(核*小时)和内存计费单位(GB * 小时)?
A:在云托管中,每个服务下有一个运行中的版本(在发布过程中,服务同时有新旧两个版本在运行中),每个版本会消耗一定数量的实例。每个实例的规格(CPU几核、内存几GB),就好像它的“功率”。实例运行了多久,它所消耗的资源量就是规格乘以运行时间(精确到秒)。

一个0.25核0.5GB的实例运行4个小时,消耗的资源量是:

CPU:0.25 * 4 = 1 (核*小时)
内存:0.5 * 4 = 2 (GB * 小时)
一个1核2GB的实例运行1个小时,消耗的资源量是:

CPU:1 * 1 = 1 (核*小时)
内存:2 * 1 = 2 (GB * 小时)
两个0.5核1GB的实例运行1个小时,消耗的资源量是:

CPU:0.5 * 2 * 1 = 1 (核*小时)
内存:1 * 2 * 1 = 2 (GB * 小时)
可以看到,他们消耗的资源量是完全相同的,产生的费用也是完全一样的。

从另一个角度来说,传统模式下以包月方式购买有效期一个月的一台1核2GB的云服务器,实际是你买断了一个月的固定的CPU和内存消耗量:

CPU:1 * 24 * 30 = 720 (核小时)
内存:2 * 24
30 = 1440 (GB * 小时)
和云托管的按量计费模式区别在于,一个月内无论你的云服务器实际利用率多少,你都支付了全部资源量的费用(用不够一个月也按一个月算)。基于云托管的自动弹性伸缩特性,你可以完全释放冗余的计算资源,大幅降低成本。

Q:如何理解MySQL的计费单位CCU(个*小时)?
A:CCU是MySQL的算力单位,0.25CCU对应传统模式中0.25核0.5GB的数据库的计算能力,1CCU对应传统模式中1核2GB的数据库的计算能力,依此类推。CCU最大可达到16CCU,对应传统模式中16核32GB的数据库的计算能力。数据库计算消耗的资源量就是实时算力乘以运行时间(精确到秒)。

从另一个角度来说,传统模式下以包月方式购买有效期一个月的一个1核2GB的云数据库(等效1CCU的算力),实际是你买断了一个月的固定的CCU算力消耗量:1 * 24 * 30 = 720 (个*小时)。

和云托管MySQL的按量计费模式区别在于,一个月内无论你的云数据库实际利用率多少,你都支付了全部资源量的费用(用不够一个月也按一个月算)。基于云托管的自动弹性伸缩特性,你可以完全释放冗余的计算资源,大幅降低成本。

Q:弹性伸缩很方便,但是用量不透明,感觉心里没底?
A:云托管提供详细的监控数据,可实时掌握资源的实际用量、伸缩情况。和云服务器对比,你也依然需要通过云服务器的实时监控才能确认你包月买断的服务器资源中,有多少是真正在被使用、多少其实是冗余浪费。真正的实际用量方面,云托管和云服务器的透明度是一致的。

Q:弹性伸缩如果不断扩容,会不会导致费用大幅超出预期,“醒来房子没了”?
A:这其实就是控制费用上限的问题。

(1)每个版本的实例数上限为50个,超过上限不会再继续扩容,即每日费用上限完全可控。如果费用预算较紧,还可以手动调低版本的实例最大副本个数。
算力用量和费用)?
A:任何对数据库的读写和运算操

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 6:58:55

张量网络:量子物理启发的机器学习新范式

1. 项目概述:当量子物理遇见机器学习如果你最近在关注机器学习的前沿动态,可能会发现一个有趣的现象:一些听起来像是高能物理实验室里才会讨论的术语,比如“张量网络”、“纠缠熵”、“重整化群”,正越来越多地出现在机…

作者头像 李华
网站建设 2026/6/21 6:53:58

C++队列的使用

一、队列的介绍 std::queue 是 C 标准库提供的先进先出(FIFO, First In First Out)容器适配器,是队列数据结构的标准实现。它的核心规则是:只能在队尾添加元素、只能在队首移除元素,不支持随机访问中间元素&#xff0…

作者头像 李华
网站建设 2026/6/21 6:48:34

Jmeter分布式压测实战:Linux Master与Windows Slave混合环境配置指南

1. 项目概述:告别低效,拥抱自动化压测还在为每次性能测试都要手动上传脚本、启动多个Jmeter实例而头疼吗?尤其是在混合操作系统(Linux Windows)的环境下,这种重复劳动不仅效率低下,还容易出错。…

作者头像 李华
网站建设 2026/6/21 6:47:53

Kimi中文AI深度使用指南:长文本处理与职场提效实战

1. 项目概述:为什么一个“免费AI助手”的标题值得写上万字?最近在几个技术社群和内容创作圈子里,几乎每天都能看到类似这样的提问:“有没有真正好用、不用翻墙、中文理解不拉胯的AI?”“Kimi到底能不能替代我每天花30块…

作者头像 李华
网站建设 2026/6/21 6:45:22

CC-Switch 接入 DeepSeek-V4-Pro 的协议层调试指南

1. 这不是“换模型”而是重构本地AI工作流的底层协议 最近两周,我收到至少17条来自不同技术背景朋友的私信,问题高度一致:“CC-Switch Claude Code 接入 DeepSeek-V4-Pro 后,UI里点一下就报错 API error: 400 the supported api…

作者头像 李华
网站建设 2026/6/21 6:45:00

嵌入式GUI开发:emWin多缓冲与虚拟屏幕技术实战解析

1. 项目概述:为什么嵌入式GUI需要多缓冲与虚拟屏幕?在嵌入式系统上开发图形用户界面(GUI),尤其是在资源受限的单片机(MCU)环境中,我们常常面临一个核心矛盾:有限的硬件性…

作者头像 李华