【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless

全面测评TDSQL-C Mysql Serverless

在这里插入图片描述

文章目录

  • 全面测评TDSQL-C Mysql Serverless
    • 前言
    • 什么是TDSQL-C Mysql Serverless
    • 初始化 TDSQL-C Mysql Serverless
      • 新建数据库
      • 建立数据表
      • 开启外网访问
    • 兼容性
      • SQL文件 导入导出
      • navicat 直接在线传输
    • 构建测试环境
      • 准备Python测试脚本
      • 准备 Jmeter 性能测试工具
    • 自动启停测试
      • 结论
    • CCU资源扩缩测试
      • 结论
    • 可靠性在测试过程中的体验
    • 总结

前言

数据库是我们开发应用不可或缺的底层基座,它负责存储和管理应用程序所需的数据。随着技术的不断进步,出现了各种新的数据库模式和解决方案,其中包括备受瞩目的 Serverless 模式。

Serverless 模式的出现改变了传统数据库的运行方式,它提供了更高的弹性和灵活性,使开发人员可以专注于应用逻辑而不必过多关注底层基础设施的管理。在 Serverless 模式下,数据库资源的变成自动扩展和按需付费,这为应用开发和运维减少了极大的成本。

这次很幸运,在 CSDN 上看到腾讯推出的 TDSQL-C 测评活动,对于资深的IT技术研发,需要时刻保持对好产品的探索,以便进一步提高企业竞争力,也同时可以对现有的知识模式进行整理。

相关活动链接传送门

在本次 TDSQL-C Serverless 数据库测评中,我将从数据库的 自动启停CCU资源扩缩兼容性 等方面进行测试,以帮助开发者和企业更好地了解和选择适合自己需求的数据库解决方案。

let's go ! 让我们开始今天的数据库测评的旅程,深入了解一下 TDSQL-C Mysql Serverless 的特性和潜力,看看到底是名副其实还是名不副实

什么是TDSQL-C Mysql Serverless

这是一种基于云平台的 Serverless MySQL 解决方案,TDSQL-C MySQL 版(TDSQL-C for MySQL)是腾讯云自研的新一代云原生关系型数据库。融合了传统数据库、云计算与新硬件技术的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。TDSQL-C MySQL 版100%兼容 MySQL 5.7、8.0。实现超百万级 QPS 的高吞吐、最高 PB 级智能存储、Serverless 秒级伸缩,助力企业加速完成数字化转型,保障数据的安全可靠。

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

初始化 TDSQL-C Mysql Serverless

首先,我们需要现在腾讯云上购买我们的 TDSQL-C Mysql Serverless,这里我选择的是

  • 版本 mysql5.7(刚好有个数据库也是5.7,方便迁移)
  • 配置 最小 0.25 最大 0.5(这里是方便我观察数据库在并发情况下的稳定性)
  • 自动启停 10分钟(设置时间太长了需要等好长时间!!所以大家根据自己的情况设置,这里因为是测评,项目的话大家可以设置时间长一点)

在这里插入图片描述

购买之后会自动启动,然后我们通过控制台的登录按钮登录进数据库:

在这里插入图片描述

新建数据库

在这里插入图片描述

建立数据表

在这里插入图片描述
这边可以选择使用界面新建,也可以选择sql窗口执行建表语句,我的建表语句如下:

CREATE TABLE `member` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `title` text,
  `desc` longtext,
  `primary_key` text,
  `thumb_img` longtext,
  `tag` varchar(255) DEFAULT '',
  `author` varchar(255) DEFAULT '',
  `author_id` int(10) DEFAULT NULL,
  `collect_num` int(10) DEFAULT NULL,
  `create_date` datetime DEFAULT NULL,
  `update_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

开启外网访问

为了方便程序开发连接,我们还是需要开启一下外网访问的:
在这里插入图片描述

兼容性

SQL文件 导入导出

这边我准备直接将我现有的博客数据库迁移到 TDSQL-C Mysql Serverless
在这里插入图片描述
在这里插入图片描述

  • 直接通过DMC进行数据库导入

在这里插入图片描述

在这里插入图片描述

是完全能够正常兼容导入,0 errors!!!

顺便去看一下我的博客是不是真的运行正常,哈哈!!
在这里插入图片描述

ok,文章都还在,靠谱!!

navicat 直接在线传输

平时我还挺喜欢用一些数据库客户端进行数据传输的,这次试一下通过在 navicat 中是否能够正常传输

在这里插入图片描述
在这里插入图片描述
这个也是毫无压力,平稳过渡了属于是!!!

构建测试环境

为了方便之后的 自动启停测试CCU扩缩测试,这里我准备了一个 Python 的 API 程序,主要功能就是网数据库中插入数据,然后也下载了专门的测试工具:jmeter,方便观察我们的测试结果

准备Python测试脚本

  • main.py
import random
import pymysql


from flask import Flask

app = Flask(__name__)

DB_CONFIG = {
    'host': 'sh-cynosdbmysql-grx',
    'port': 26949,
    'user': 'root',
    'password': 'x',
    'db': 'test',
}

def randomStr(length):
    seed = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"
    return ''.join(random.choices(seed, k=length))



def insert():
    data = []

    connection = pymysql.connect(**DB_CONFIG)
    cursor = connection.cursor()

    # 构造插入语句
    insert_query = """
        INSERT INTO member (`title`, `desc`, `primary_key`, `thumb_img`, `tag`,  `author`, `author_id`, `collect_num`, `create_date`, `update_date`)
        VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
        """

    # 读取图片文件
    num = random.randint(1,10)

    # with open("./pic/" + str(num) + ".jpg", "rb") as image_file:
    #     encoded_string = base64.b64encode(image_file.read())
    encoded_string = randomStr(100)  

    # 构造插入数据
    insert_d = (randomStr(5), randomStr(5), randomStr(10), encoded_string, randomStr(10), randomStr(10), 1,
                1, '2023-01-01', '2023-01-01')
    data .append(insert_d)
    data .append(insert_d)
    # 执行插入语句
    cursor.executemany(insert_query, playlist_data)
    connection.commit()

    # 关闭连接
    cursor.close()
    connection.close()
    print("数据插入成功")

@app.route('/create')
def create():
    insert()
    return 'hello world'

if __name__ == '__main__':
    app.run(host='127.0.0.1',port=5000)

这个脚本很简单,主要就是通过 flask 暴露api,然后调用 inert 函数插入两条数据,在使用前还需要安装依赖哦

pip install flask pymysql

准备 Jmeter 性能测试工具

点击下载

  • 创建 Test Plan
    在这里插入图片描述
  • 设置一下线程数和监听结果的一些数据输出

在这里插入图片描述

这样我们的环境就大致准备好了!!!

自动启停测试

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

首先我们购买了 TDSQL-C Mysql Serverless 后,默认是启动的,一段时间数据库没有接收到任务后,就会变成暂停状态,这个我们可以手动暂停,也可以等他自动暂停:

在这里插入图片描述
这个时候就已经暂停了!那么我们的预期是:不需要我们手动启动这个数据库,通过脚本发起请求,然后数据库就会自动启动并且正常提供服务!!

本地现将 flask 启动起来

python main.py

 * Serving Flask app 'test'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
  • 配置一下请求地址

在这里插入图片描述

  • 启动该线组,观察结果树

在这里插入图片描述

  • 观察python脚本情况

在这里插入图片描述

  • 数据库智能管家观察性能状态

在这里插入图片描述

结论

根据这个的测试结果,我们可以得出结论:TDSQL-C MySQL Serverless能够实现完全自动的启停功能。尽管在第一个握手请求时可能会出现失败的情况,但这并不会对数据库的正常运行产生任何实质性的影响。在真实的业务场景中,由于存在大量的请求,数据库几乎不会出现服务暂停的情况。

TDSQL-C MySQL Serverless通过采用一系列的机制和流程,实现了高可用性和自动化的启停功能。即使在数据库实例暂停的状态下,它仍能够保持对外提供服务。它是如何实现的呢?感兴趣的小伙伴可以去官方文档上找一下资料,这里我引用一部分给大家看看:

在实例暂停的状态下,如果有连接发起,MySQL 客户端首先会同 perceptron 进行 TCP 握手(P0),完成 TCP
握手后,perceptron 会向客户端发送 “随机数 A” 进行挑战(P1),MySQL 客户端用自己的账号密码和 “随机数 A”
来计算并回复自己的 “登录解答 A”(P2)。由于 perceptron 并没有存储用户的账号密码,所以无法校验 “登录解答 A”
是否正确,但 perceptron 能区分客户端是 MySQL 客户端,还是其他类型的客户端(perceptron
在机器学习界是分类器,区分不同类型的客户端也是用他命名的原因之一)。校验 “登录解答 A” 将由 TDSQL-C MySQL
版计算层(下文简称 TDSQL-C)来完成,perceptron 通过管控唤醒 TDSQL-C 后(P3),开始下一步的登录校验流程。 在和
perceptron TCP 握手之后(P4),对于 TDSQL-C 来说,perceptron 也是一个普通的 MySQL
客户端,所以也发送一个 “随机数 B” 挑战(P5)给 perceptron。Perceptron 的回复是一个特殊的 MySQL
报文(P6),首先它用 “随机数 B” 和 perceptron 自身的鉴权机制计算得到 “登录解答 B” 并放入报文中,其次它也将
“随机数 A” 和 “登录解答 A” 捎带在此报文中。 TDSQL-C 收到特殊的解答报文后会做两次校验,第一次是 “随机数 B” 和
“登录解答 B” 的正确性以及 perceptron 的身份,通过后再进行第二次的 “随机数 A” 和 “登录解答 A”
的正确性,通过即以用户身份进行登录,并回复 perceptron 登录成功(P7)。Perceptron 进而回复用户登录成功(P8)。
当集群处于暂停状态时,仅保留 perceptron 的路由,当集群恢复后时,系统同时保留 perceptron 的路由和 TDSQL-C
的路由,并设置 perceptron 的路由权重为 0,以实现新增连接直连到 TDSQL-C,同时存量与perceptron
已经建连的连接依然能够通讯。

CCU资源扩缩测试

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

Serverless 服务需要设定弹性范围,就像我们当时购买时设置的 min为 0.25 max为0.5

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

为了方便观察 CCU 的扩缩情况,我把 Max 改成了 1

  • 将配置Max改成1了

在这里插入图片描述

  • 修改脚本
     with open("./pic/" + str(num) + ".jpg", "rb") as image_file:
         encoded_string = base64.b64encode(image_file.read())

为了将CCU拉上去,我开始加大上传的数据,这些图片都是高清图,大小都为 10M以上

当前 CCU 情况:

在这里插入图片描述
因为最小是 0.25 然后最大是1 看看能不能动态扩容 超过 0.5

  • 30线程测试

在这里插入图片描述

  • 观察 CCU 情况

在这里插入图片描述

可以看到 CCU 遇到请求的时候,会自动拉成 min 配置,然后发现处理有压力就会自动网上扩容
  • 通过数据库智能管家DBbrain查看一下性能实施数据,可以看到压力确实是上来了

在这里插入图片描述

  • 观察jmeter相关数据

请求的处理还是很平稳的
在这里插入图片描述

在这里插入图片描述

结论

在测试中,我将最小 CCU 设置为0.25,最大CCU设置为1,然后使用JMeter构建压力测试。

测试发现,在低负载时,数据库CCU会自动缩减至最小0.25,不会造成资源浪费。当压力增加时,CCU会自动扩容,在压力达到一定程度后成功扩充至最大值1。在整个测试过程中,CCU的调整非常敏感和平滑,资源能够迅速按需分配,确保了数据库性能的稳定。

通过视图观察,可以明显看到CCU的弹性伸缩情况。在压力增大时,CCU会迅速扩容以应对请求,压力减小后也会很快缩减规模。

最终 TDSQL-C MySQL Serverless 还是成功的顶住,可以非常完好地根据实际负载情况,实现运行成本的优化和资源利用率的最大化。

可靠性在测试过程中的体验

主要可能就是在运行可靠性身上吧,我们平时在运维数据库的过程中,经常要进行程序日志监控,以及指标报警通知,这个在平时都是很麻烦的,然后我在测试的过程中,也是将代码进行修改了一下,看看腾讯云 TDSQL-C Mysql Serverless 是否能够观察到这个问题

我在测试过程中将事务的提交代码给注释掉了,不过 在控制台第一时间就捕获到了这个异常!!!实时性非常高,如下图所示

在这里插入图片描述
然后在实时的面板上也能看到

在这里插入图片描述

然后运维不是一般都要编写这段时间的运维情况嘛,然后我发现这个 TDSQL-C Serverless 可以自动设置生成健康报告,汇报数据库区间的运行状态

在这里插入图片描述

通过报告可以看到运行区间的健康等级,以及我出现了 2次未提交事务也被捕获到了

在这里插入图片描述
事件详情也被描述在文档中
在这里插入图片描述

  • 然后在诊断优化中还可以找到慢查询SQL,以便于我们进一步调优程序

在这里插入图片描述

总结

通过本次对腾讯云 TDSQL-C Mysql Serverless 的全方位测试,可以明显感受到这是一款非常优秀的云数据库产品,属于是名副其实了,它完全兼容 MySQL,可以平滑迁移现有业务;采用 Serverless 架构,弹性扩缩容,按需付费,极大降低了使用成本。

在自动启停方面,它可以实现秒级自动唤醒,即使在数据库实例停止状态下,也能够保持服务可用性。CCU 资源扩缩方面,它可以根据请求压力智能调配资源,保证数据库性能的平稳。可靠性方面,它具备故障秒级探测和智能诊断能力,可以及时发现并定位问题,生成健康报告。

使用 TDSQL-C Mysql Serverles,开发者不需过多考虑基础设施的搭建和优化,可以专注在业务开发上,极大提升了研发效率。它非常适合要求高弹性、高性能的数据库场景,如高并发、大数据量的应用。

经过这次的体验,可以看出腾讯云 TDSQL-C Mysql Serverless 是一个功能强大、性能优异、易于使用的云原生数据库产品。它可靠的服务质量、卓越的性价比、以及腾讯在云数据库领域的技术积淀,让它成为企业数字化转型过程中不可或缺的技术基石。相信从现在开始,对于许多互联网公司来说,TDSQL-C Mysql Serverless 将是云数据库建设的首选。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/83880.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hive底层数据存储格式

前言 在大数据领域,Hive是一种常用的数据仓库工具,用于管理和处理大规模数据集。Hive底层支持多种数据存储格式,这些格式对于数据存储、查询性能和压缩效率等方面有不同的优缺点。本文将介绍Hive底层的三种主要数据存储格式:文本文件格式、Parquet格式和ORC格式。 一、三…

C++day1(笔记整理)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.第一个c程序&#xff1a;hello world #include <iostream> //#:预处理标识符 //<iostream>:输入输出流类所在的头文件 //istream:输入流类 //ostream:输出流类using namespace std; //std&#x…

一文看懂群晖 NAS 安装 Mysql 远程访问连接

文章目录 1. 安装Mysql2. 安装phpMyAdmin3. 修改User 表4. 本地测试连接5. 安装cpolar6. 配置公网访问地址7. 固定连接公网地址 群晖安装MySQL具有高效、安全、可靠、灵活等优势&#xff0c;可以为用户提供一个优秀的数据管理和分析环境。同时具有良好的硬件性能和稳定性&#…

arm安装docker与docker-copose

一、银河麒麟Arm64安装docker 1、docker 安装包地址&#xff1a; https://download.docker.com/linux/static/stable 2、解压&#xff0c;然后将docker目录下文件拷贝到/usr/bin里 tar -xf docker-18.09.3.tgz mv docker/* /usr/bin/ 3、准备 docker.service系统配置文件 &…

sql in mac学习记录

鉴于有一段时间没有访问mysql了&#xff0c;最近打算在mac 系统上下载mysql 练习一下sql的使用&#xff0c;于是 First, the mysql download https://dev.mysql.com/downloads/mysql/ Second, Mysql install steps Install the software by normally install one software …

深入理解ForkJoin

任务类型 线程池执行的任务可以分为两种&#xff1a;CPU密集型任务和IO密集型任务。在实际的业务场景中&#xff0c;我们需要根据任务的类型来选择对应的策略&#xff0c;最终达到充分并合理地使用CPU和内存等资源&#xff0c;最大限度地提高程序性能的目的。 CPU密集型任务 …

基于springboot+vue的食材商城(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

Word怎么转换成PDF文档?多个Word转换成PDF步骤分享

word文档是一种非常好用的文件格式&#xff0c;可以帮助用户们很好的保存图片和文字内容&#xff0c;不过并不是只有word这一种文档类文件格式&#xff0c;还有一种pdf文档也深受用户们的欢迎&#xff0c;在工作或者学习过程中这两种文档是可以互相转换格式的&#xff0c;那么W…

分类预测 | MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入分类预测

分类预测 | MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入分类预测 目录 分类预测 | MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入…

options补充

前言 .NET Core 引入了Options模式&#xff0c;使用强类型的类来表达配置项&#xff0c;提供了三种在不同场景下的使用接口&#xff1a; IOptions IOptionsSnapshot IOptionsMonitor 但是常常不知道什么时候使用哪种方式才最合适&#xff0c;接下来我就用代码详细解读一下三种…

QT VS编译环境无法打开包括文件type_traits

这问题&#xff0c;别人给的处理方法都是&#xff1a; 添加环境变量执行vsvars32.bat/vcvarsall.bat/vsdevcmd.bat重新安装QT项目&#xff1a;执行qmake。。。。 个人不推荐配置环境编译&#xff0c;除非你非常熟&#xff0c;因为配置环境变量需要你知道有哪些路径需要添加&a…

Linux学习之ftp安装、vsftpd安装和使用

ftp需要两个端口&#xff1a; 数据端口 命令端口 ftp有两种模式&#xff1a; 被动模式&#xff1a;建立命令连接之后&#xff0c;服务器等待客户端发起请求。 主动模式&#xff1a;建立命令连接之后&#xff0c;服务器主动向客户端发起数据连接&#xff0c;因为客户端可能有防火…

iOS 17 正式版预计 9 月中下旬发布,部分新功能延后推出

苹果公司预计将在 9 月中下旬推出 iOS 17 正式版&#xff0c;iPhone XS 及更新的机型可免费更新。这次更新包含了许多新功能&#xff0c;但是根据苹果公司的网站显示&#xff0c;并不是所有的功能都会立即可用。苹果表示有一些功能“将在今年晚些时候推出”&#xff0c;比如&am…

STM32F4X 定时器中断

STM32F4X 定时器中断 什么是定时器STM32F4X 定时器分类有关定时器的概念预分频(PSC)自动重装载值(ARR) STM32F4X定时器例程定时器相关函数定时器例程 什么是定时器 定时器(Timer)最基本的功能就是定时&#xff0c;比如定时翻转LED灯&#xff0c;定时向串口发送数据等。除此之外…

webpack 和 ts 简单配置及使用

如何使用webpack 与 ts结合使用 新建项目 &#xff0c;执行项目初始化 npm init -y会生成 {"name": "tsdemo01","version": "1.0.0","description": "","main": "index.js","scripts&…

2019年3月全国计算机等级考试真题(C语言二级)

2019年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 负责数据库中查询操作的数据库语言是 A. 数据定义语言 B. 数据管理语言 C. 数据操纵语言 D. 数据控制语言 正确答案&#xff1a;C 第2题 有关系如下图所示&#xff0c;其违反了哪一类完整性约束 …

MetaMask Mobile +Chrome DevTools 调试Web3应用教程

注&#xff1a;本教程来源网络&#xff0c;有兴趣的可以直接到这里查看。 写好了WEB3应用&#xff0c;在本地调试用得好好的&#xff0c;但是用钱包软件访问就报莫名的错&#xff0c;但是又不知道是什么原因&#xff0c;排查的过程非常浪费时间 。 因此在本地同一局域网进行调试…

vite初始化vue3项目(配置自动格式化工具与git提交规范工具)

初始化项目 vite构建vue项目还是比较简单的&#xff0c;简单配置选择一下就行了 初始化命令 npm init vuelatest初始化最新版本vue项目 2. 基本选项含义 Add TypeScript 是否添加TSADD JSX是否支持JSXADD Vue Router是否添加Vue Router路由管理工具ADD Pinia 是否添加pinia…

用最简单的方式带你了解 MOS 管的七大封装类型

在制作 MOS 管之后&#xff0c;需要给 MOS 管芯片加上一个外壳&#xff0c;这就是 MOS 管封装。MOS 管封装不仅起着支撑、保护和冷却的作用&#xff0c;同时还可以为芯片提供电气连接和隔离&#xff0c;从而将管器件与其他元件构成完整的电路。为了更好地应用 MOS 管&#xff0…

微信小程序纯前端从阿里云OSS下载json数据-完整版

起因 因为云开发开始收费(貌似很久了),准备改造在以前的小程序,数据转到oss上,小程序使用原生,不算专业领域, 所以先百度.... 网上的教程真的是千篇一律,大部分开局就是require(ali-oss); 好点的npm install ali-oss --save开局,拼凑操作到最后发现要用云开发,因为云…