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

2023-12-27 10:40

本文主要是介绍【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless实践之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

腾讯云TDSQL-C联合CSDN推出了一款云数据库产品测评活动,让我们一起来体验一下。


一、什么是云数据库?

云数据库是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势。

云数据库的特性有:实例创建快速、支持只读实例、读写分离、故障自动切换、数据备份、Binlog备份、SQL审计、访问白名单、监控与消息通知等。

1. 优势:

  • 可以使用户按照存储容量和带宽的需求付费
  • 可以将数据库从一个地方移到另一个地方(云的可移植性)
  • 可实现按需扩展
  • 高可用性(HA)

1.1 轻松部署:

用户能够在控制台轻松的完成数据库申请和创建,数据库实例在几分钟内就可以准备就绪并投入使用。

1.2 高可靠:

云数据库具有故障自动单点切换、数据库自动备份等功能,保证实例高可用和数据安全。

1.3 低成本:

数据库支付的费用远低于自建数据库所需的成本,用户可以根据自己的需求选择不同套餐,使用很低的价格得到一整套专业的数据库支持服务。

云数据库发展经历了三个时代:

  • 1.0时代是以云托管数据库为主
  • 2.0时代是容器架构的云原生数据库时代
  • 3.0时代,云Serverless数据库将成为主流趋势。

腾讯云数据库TDSQL-C Serverless新版发布,标志着云原生数据库Serverless化正式步入全面推进阶段。


二、TDSQL-C MySQL云数据库:

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 服务支持按实际计算和存储资源使用量收取费用,不用不付费。

1. Serverless 服务架构:

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

四、购买并开通TDSQL-C MySQL Serverless:

如下我们在选择数据库实例时,可以看到预置资源的MySQL,一年的费用是3250.94,就是说你哪怕是数据库没有使用,只要买了,就要付这么多的钱。那想像一下,我们在学校开发系统,只有白天才会使用,到了晚上的话、周未时间段,基本上没有使用的,这样买数据库的话,感觉十分的浪费。

在这里插入图片描述

但是我们切换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名分数信息日志')const date1 = new Date();let sql = 'SELECT * FROM `data_scores` order by id desc limit 10';const [results] = await connection.execute(sql);const date2 = new Date();const date3 = 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 -P 27859 -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 -P 27859 -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 架构的云原生数据库。

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

连接不断转发请求能力:

111

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

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个,超过上限不会再继续扩容,即每日费用上限完全可控。如果费用预算较紧,还可以手动调低版本的实例最大副本个数。

例如:实例数上限50个,每个实例规格为0.25核0.5GB,则每日消耗资源量上限为:

CPU:0.25 * 50 * 24 = 300 (核*小时)
内存:0.5 * 50 * 24 = 600 (GB * 小时)
(2)微信云托管即将提供额度监控功能,当CPU/内存/数据库计算/数据库存储等任意资源的用量超过你设置的阈值时,会发送告警信息。你可以选择立刻冻结服务,停止新的费用产生。此时线上业务也会中断,请谨慎评估。

Q:数据库什么情况下会触发自动暂停(不产生任何数据库算力用量和费用)?
A:任何对数据库的读写和运算操作,都会消耗数据库的算力。开启数据库的自动暂停后,连续10分钟内没有任何读写和运算操作,数据库即进入暂停状态。暂停状态不会产生数据库算力资源用量,但还会有数据库存储用量。

Q:什么情况下服务会缩容到0(不产生任何容器相关用量和费用)?
A:服务下版本的实例最小副本数为0,且当前服务连续半小时没有任何访问时,会触发缩容到0。


总结:

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

这篇关于【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless实践之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/542856

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC