本文介绍: 数据库作为公司软件业务应用中最重要的基础软件之一,在整个IT生态体系具有举足轻重的作用,随着业务数据量的增大和算力限制,单台MySQL实例越来越满足不了需求腾讯云 TDSQL-C Serverless腾讯自研的云原生关系数据库 TDSQL-C MySQL版的无服务器架构版。按实际计算存储资源使用量收取费用,不用不付费,非常适合中小型企业腾讯云TDSQL-C联合CSDN推出了一款强大的数据库产品测评活动火热进行中,让我们体验一下这个国产强大的数据库

一、前言

数据库作为公司软件业务应用中最重要的基础软件之一,在整个IT生态体系具有举足轻重的作用,随着业务数据量的增大和算力的限制,单台MySQL实例越来越满足不了需求腾讯云 TDSQL-C Serverless是腾讯云自研的云原生关系型数据库 TDSQL-C MySQL版的无服务器架构版。按实际计算存储资源使用量收取费用,不用不付费,非常适合中小型企业

腾讯云TDSQL-C联合CSDN推出了一款强大的数据库产品测评活动火热进行中,让我们来体验一下这个国产强大的数据库

在这里插入图片描述


二、为什么有TDSQL-C Serverless版本

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

1. 产品系列

我们这次选择的是MySQL版本感兴趣同学可以自行测试PostgreSQL。

在这里插入图片描述

2. 解决问题

2.1 单机数据库瓶颈

2.2 应用层分片开发工作量

2.3 MySQL版的无服务器架构

3. 其它的解决方案:

选择开源或 NoSQL 产品能够解决数据库瓶颈,这些产品免费或者费用相对较低,但可能如下问题

4. 应用场景

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述


三、TDSQL-C MySQL 版提供 Serverless服务特性

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

对于应用开发者来讲,由于引入分布式架构最大的痛点就是数据库特性的限制,如不支持函数存储过程等,再一个痛点是在表设计时,也需要考虑数据分布问题。对于运维人员来说,也是需要方便的去管理集群局部变更需要考虑整体影响

1. 资源扩缩范围(CCU):

2. 弹性策略

3. 自动启停:


四、资源扩缩范围(CCU)+ 弹性策略实现“弹性收费”:

1. 计费逻辑

CCU(TDSQL-C Compute Unit)为 Serverless计算计费单位

在这里插入图片描述
因为Serverless 集群持续监控用户的 CPU、内存等 workload 负载情况,根据一定的规则触发自动扩缩容策略

在实际业务开发中,设置弹性范围时,最小容量可以配置为0.25 CCU,最大容量选择较高的值32、64。当然,可以根据自身的实际业务去评估一个大概的值。这样做的好处是:

如果您的业务场景需要快速扩展到非常高的容量,请考虑最小容量设置为稍大一些的值。

2. 测试TDSQL-C MySQL 版提供 Serverless 服务自动扩缩容策略

基准测试比较直接简单、易于比较用于评估服务器处理能力,可以不关心核心业务。

3. TPCC基准测试

TPCC是由TPC推出的一套基准测试程序,一些硬件厂商会以TPCC作为对比标准之一,专用于MySQL基准测试事务处理能力、ACID验证)。

TPCC-MySQL模拟一套电商环境用于下单支付、查订单、发货、查库存,模拟各个环节,获取数据评估当前环境吞吐量

4. 测试机器说明

准备了2台机器一台公司测试服务器1核2G,一台是开通的2核8G的云服务器,模拟一个流量突增的场景:

  • 1核2G服务器用来模拟平时的业务流量
  • 2核8G服务器用来模拟业务量突增的场景。

在这里插入图片描述

5. TPCC-MySQL安装

# 下载源码wget http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz
# 解压源码tar -zxf tpcc-mysql-src.tgz
cd tpcc-mysql/src
# 编译
make

在这里插入图片描述

安装过程中,出现以下错误,如果未出现,可以略过。

在这里插入图片描述
通过错误提示查找,说是缺少libmysqlclientdev,在Centos中安装mysqldevel包。

sudo yum install -y mysql-devel

查看TPCC-MySQL目录下的文件,会发现有一些自带sql文件,包括建表语句索引文件。

在这里插入图片描述
导入测试数据表相关索引

# 创建数据库
mysql -h gz-cynosdbmysql-grp-7xkd8vs6.sql.tencentcdb.com -P 27386 -u root -p -e 'drop database if exists tpcc_test;create database tpcc_test;show databases;'

# 导入测试数据表
mysql -h gz-cynosdbmysql-grp-7xkd8vs6.sql.tencentcdb.com -P 27386 -u root -p tpcc_test < create_table.sql

# 导入相关索引
mysql -h gz-cynosdbmysql-grp-7xkd8vs6.sql.tencentcdb.com -P 27386 -u root -p tpcc_test < add_fkey_idx.sql

在这里插入图片描述

表名说 明:customer-客户表、district-地区表、history历史订单表、item商品条目表、new_orders新订单表、order_line订单状态表、orders下单表、stock库存表、warehouse仓库表。

测试创建10个warehouse,进行填充测试使用的数据。

./tpcc_load gz-cynosdbmysql-grp-7xkd8vs6.sql.tencentcdb.com:27386 tpcc_test root Testdb11. 10

在这里插入图片描述
遇到问题server参数太长了。

在这里插入图片描述

没办法,只能使用比较笨的办法,搭建一个临时数据库,填充完测试数据后,使用mysqldump导出数据,再通过source导入到TDSQL-C测试MySQL数据库中

在这里插入图片描述

如下为对应的表结构与数据。

在这里插入图片描述

压测使用tpcc_start命令执行压测,对10个数据仓库,预热200秒,200个并发连接运行600秒,结果存放在文件tpcc.log中。

./tpcc_start -h gz-cynosdbmysql-grp-7xkd8vs6.sql.tencentcdb.com -P27386 -dtpcc_test -u root -p Testdb11. -w 10 -c 200 -r 200 -l 600 -i 10 ./tpcc.log

这里主要几个参数含义如下:

-h:主机名-P端口号
-d: 数据库名
-u: 用户名
-p: 密码
-w:仓库数量
-c: 并发线程-r: 预热时间,以秒为单位默认10秒,主要目的是为了将数据加载到内存
-l: 运行时间,以秒为单位默认20-i输出时间间隔

6. 压测结果说明

以下为第一台机器压测结果,可以看到各项指标也符合要求。

在这里插入图片描述

在第一台机器运行差不多100s左右时,第二台机器模拟业务量突增的情况,以下是各项指标也符合要求,而且压测的各项指标结果都强于第一台机器

在这里插入图片描述

并行压测的同时,也会出现一些“Lock wait timeout exceeded; try restarting transaction”,可能原因:意外处理没有关闭连接,导致连接过多、或是要更新的表的锁在其它线程手里、系统异常导致事务提交,再次请求相同记录等。

在这里插入图片描述总结

TPC-C是业界常用的一套Benchmark用于评测数据库的联机交易处理(偏向OLTP能力)。主要涉及10张表,包含了NewOrder(新订单生成)、Payment(订单付款)、OrderStatus(最近订单查询)、Delivery配送)和StockLevel(库存缺货状态分析)等五类业务事务模型

TPC-C使用TpmC值(Transactions per Minute)来衡量系统最大有效吞吐量,每分钟事务数,该值越大越好。可以看到一台机器的TpmC是498.600,第二台机器的TpmC是864.900,是第一台机器的1.7倍。

7. TDSQL-C MySQL 版提供 Serverless 服务监控分析:

以下是2台机器分别压测的历史趋势图,CPU在最高是6.13%。

在这里插入图片描述

以下为TDSQL-C MySQL Serverless 服务的弹性策略,在一开始会根据用户购买时选择的容量范围,将 CPU、内存资源限制到最大规格,极大程度降低因 CPU 和内存扩容带来的时间影响和使用限制。

当第一台机器压测后,第二台机器并发压测,集群触发到自动弹性的负载阈值后,Buffer pool 会根据监控提前进行分钟级调整。

这个方案下用户使用数据库可以无感知进行 CPU 扩容,并且不会因为连接突增导致实例 OOM。

在这里插入图片描述

以下是从01:00 – 03:00这个时间段的产生的账单费用,里面包含公式里面讲到的2种费用,一种是CCU算力的费用,一个是存储空间的费用。

在这里插入图片描述
在01:09左右时间段,因为生成了10个仓库的压测数据,这时候,存储空间容量会产生一笔消费的数据。

在这里插入图片描述
在02:33左右时间段,由于有2台机器进行压测,导致有CPU、内存的消耗,使用到了CCU的算力,导致产生了CCU算力相关的费用。
在这里插入图片描述## 8. 存储资源包:

资源包是 TDSQL-C MySQL 版推出的付费资源类型分为计算资源包和存储资源包,可用于抵扣 Serverless 版集群产生的计算资源和存储资源。通过资源包,可以提前预留资源,而且,相对于按量付费方式,资源包可以帮助您节省更多成本,资源包的购买容量越大,有效期越长,越划算。

为了进一步降低用户的存储成本,可以购买存储包,甚至将数据转存到对象存储COS,用户只需要付COS的费用即可

在这里插入图片描述

存储资源包是 TDSQL-C MySQL 版推出的预付费资源类型,可用于抵扣 Serverless 版集群使用的存储资源。

在这里插入图片描述


五、自动启停实现“弹性收费”:

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

1. 上述压测失败报错

在第一次压测时,TPCC-MySQL压测失败显示连接MySQL服务器失败

在这里插入图片描述

查看原因是因为10分钟没有操作,导致TDSQL-C MySQL Serverless自动就停止服务了。

在这里插入图片描述

另外,在控制台上也可以操作数据库实例进行手动暂停操作。

2. 实际测试:

在这里插入图片描述


六、TDSQL-C MySQL Serverless原理分析:

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

Serverless 服务的弹性策略是利用监控计算实现的。通过监控业务负载情况,系统计算资源进行自动扩缩容,并对该时刻所消耗的资源进行计费。当没有数据库请求时,监控服务会触发计算资源回收,并通知接入层。当用户再次访问时,接入层则会唤醒集群,再次提供访问

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

建议在第一次设置弹性范围时,最小容量配置为0.25 CCU,最大容量选择较高的值。较小的容量设置可以让集群在完全空闲时最大限度地进行缩减,避免产生额外的费用,较大的容量可以在集群负载过大时最大限度地进行扩展,稳定度过业务峰值。

CCU(TDSQL-C Compute Unit)为 Serverless 的计算计费单位,一个 CCU 近似等于1个 CPU 和 2GB 内存的计算资源,每个计费周期的 CCU 使用数量为:数据库所使用的 CPU 核数 与 内存大小的1/2 二者中取最大值

Serverless 服务的计算和存储独立计费:计算按 CCU 个数计费,存储按使用量 GB 计费,计费系统按秒计费,按小时结算

在这里插入图片描述


七、总结

以上是我从0到1对腾讯云TDSQL-C MySQL Serverless的了解与实践通过对TDSQL-C MySQL的3个特性:资源扩缩范围(CCU)、弹性策略、自动启停,进行了实际的测试,从计算层到存储层,得到了一些总结

Serverless 集群会持续监控用户的 CPU、内存等 workload 负载情况,根据系统设定的可调整 CCU 弹性扩缩容的范围,Serverless 集群会根据这些规则触发自动扩缩容策略,在该范围内根据实际业务压力自动增加或减少 CCU。

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

3个重要的特性充分的展示了 Serverless 支持按实际计算和存储资源使用量收取费用,不用不付费,将腾讯云云原生技术普惠用户。

在这里插入图片描述

初创企业、中小企业在数据库层面的最大需求就是成本,通过腾讯云领先的技术完整的生态以及极致的用户体验,让用户充分体验云上 Serverless 架构的高效率、免运维、灵活扩展、降低成本等优势,从而构建起贴近用户实际业务场景的强大数据库产品和健壮完善的数据库生态。为开发者、各行各业用户更便捷、更高效率、更低成本的 Serverless 服务,助力企业降本增效。

原文地址:https://blog.csdn.net/2301_79516720/article/details/133303261

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36746.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注