当前位置: 首页 > news >正文

【腾讯云 TDSQL-C Serverless 产品测评】- 云原生时代的TDSQL-C MySQL数据库技术实践

一、活动介绍:

“腾讯云 TDSQL-C 产品测评活动”是由腾讯云联合 CSDN 推出的针对数据库产品测评及产品体验活动,本次活动主要面向 TDSQL-C Serverless版本,初步的产品体验或针对TDSQL-C产品的自动弹性能力、自动启停能力、兼容性、安全、并发、可靠性等多方面的产品测评。

有幸在CSDN的推广上看到了腾讯云推出的TDSQL-C产品测评活动,数据库在我们的开发工作占比比较大,尤其是高并发、高负载的架构,数据库更是重中之重。直接将影响系统的稳定运行,也可以一起来看看互联网的大事件:

  • B站有一次瘫痪,用户反映“追番一直提示获取视频内容失败”“显示页面加载失败
  • 微博由于某位明星上了热搜,服务器直接瘫痪

在这里插入图片描述

通过这次的活动,希望也能了解一些云数据库的优势,为以后公司业务的发展做一些铺垫,万一公司的业务量翻了几十倍呢?不打没有准备之战。


二、手册体验:

在进行报名后,加入微信群,助手提供了2个实验手册用来体验TDSQL-C MySQL的一个简单入门,由于新电脑还没有装Ptyhon环境,所以,这里选择《Vue+Koa+TDSQL实现问答系统》来实际操作一下。

在这里插入图片描述
通过不到15分钟的时间,按照手册的功能描述步骤,从0到1完成了TDSQL-C MySQL的体验,接下来就让我们深入的体验一下TDSQL-C MySQL的功能。


三、 数据库介绍:

1. 数据库是什么?

数据库(Database,简称DB)是长期储存在计算机内、有组织、可共享的大量数据的集合。

数据库中的数据按一定的数据模型组织、描述和储存。具有较小冗余度、较高数据独立性、易扩展性,并可为各种用户共享。

2. 数据库、数据库管理工具的关系:

在这里插入图片描述

3. 常见数据库管理系统:

在这里插入图片描述

在平时的开发中,接触过MySQL、SQL Server2种数据库,在早期使用过.NET就是使用SQL Server数据库进行开发,后面学习了PHP后,大多数都是PHP + MySQL进行Web相关的开发工作。其间,对于PostgreSQL也是学习调研过。

4. 如何操作数据库:

数据库管理系统可以通过SQL(结构化查询语言)来定义和操作数据,维护数据的完整性和安全性,以及进行各种数据库的管理等。

在这里插入图片描述

像我平时的工作就是全栈开发,php + vue + uniapp小程序,后端基本上70%的时间,都是跟MySQL打交道,平时,也遇到过不少MySQL的问题点。希望通过这次学习,也可以复盘一下自己的所学。


四、 TDSQL-C介绍:

从最上面活动的截图,我们先大致了解一下,TDSQL-C是什么?TDSQL-C有什么样的作用呢?以下是我的一个总结,可以先了解一下TDSQL-C的基本功能、场景、作用。

在这里插入图片描述

TDSQL是腾讯推出的一款兼容MySQL,自主可控,兼高一致性的分布式数据库。

1. 功能:

  • 具有高可用性、高性能和可扩展性
  • 支持水平自动拆分,有完整的业务逻辑表,而且数据被均匀拆分到多个物理分片中
  • 有效的解决超大并发,超高性能,超大容量的OLTP类场景

2. 作用:

  • 对金融级高可用、企业级安全性、数据强一致性等场景支持友好
  • 提供完善的生态、完善的服务保障能力

五、 TDSQL-C MYSQL实操:

1. 官网购买TDSQL-C MYSQL数据库:

打开官网 (TDSQL-C MYSQL链接)[https://cloud.tencent.com/product/tdsqlc] ,点击“立即选购”。
在这里插入图片描述

新账号的话,有一些前置动作,需要进行实名制一下,否则会提示不能购买。
在这里插入图片描述

再往账号中充一点值,好进行产品的购买,这里用于测试的话,充了10块钱进行体验一下。
在这里插入图片描述
在产品选购页面,实例形态这里一定要选择“Serverless”的产品,TDSQL-C分为两个产品:一个是MySQL、一个是PostgreSQL,这里我们选择“MySQL”数据库引擎。

可以看到地域还支持国外的地域,给产品点赞,牛!

在这里插入图片描述
我们选择最新的数据库版本“MySQL 8.0”,可以根据自己的业务设置自动暂停时,选择“1个小时”,存储计费模式,可以用使用资源包,点击“购买资源包”进行购买。

在这里插入图片描述

选择“存储资源包”,容量的话,根据自己的需求进行调整,可以看出也比较便宜。

在这里插入图片描述

通过几个确认下单的步骤,购买成功存储资源包。
在这里插入图片描述

再回到数据库购买页面,将刚刚购买的存储资源包进行绑定。
在这里插入图片描述

第二步,可以设置数据库密码、默认字符集,自定义端口,表名大小写等参数。
在这里插入图片描述

经过几个确认步骤,集群创建成功,很有的意思是,这里不叫数据库实例,而是叫集群。

2. 数据库集群功能介绍:

在这里插入图片描述

默认数据库集群实例的外网是关闭的,需要自己开启。这里为了方便演示,将“自动暂停时长”设置为10分钟,有个疑问是数据库刚开启怎么就有24M存储空间了?
在这里插入图片描述

可以看到对应的资源包是0,并没有存储数据。
在这里插入图片描述

通过数据库管理工具DMC,可以看到系统默认有一些系统库,猜测这24M数据是它们的。

3. 开启外网访问地址:

点击上面“开启”,在开通外网访问地址后,注意host是一个域名(并非是IP),端口是一个随机的(并非是3306)。

4. 账号管理:

添加一个开发的账号,有只读的权限,不能有操作的权限。

在这里插入图片描述

5. 数据库管理:

在这里插入图片描述

可以单独对一些账号进行权限的控制。

在这里插入图片描述

6. 参数设置:

针对一些数据库的参数可以自己去修改,符合自己的需求。

在这里插入图片描述

7. 体验中遇到的问题:

使用数据库密码时,不能使用”Mysql.”,试了很多次,发现是密码有问题,改为”Test123.”

在这里插入图片描述

导入了一点表,在Navicat中删除后,看到表的空间并没有释放?
在这里插入图片描述

手册中的mysql2在并发流量时,好像不是太好用,下次试试Java的多线程。

在这里插入图片描述


六、TDSQL-C MySQL降本策略:

1. 自动启停:

Serverless的好处,当设置10分钟(可以随时调配)没有使用时,数据库就会暂停状态,暂停后计算将不再计费,如下数据库集群实例状态是“已暂停”。

在这里插入图片描述

一般像我们的网站,在夜晚的是没有流量的,可以节省一段时间的费用,如果是一年,那也是一笔比较可观的节能收入。

2. Serverless秒级伸缩:

改造一下上面手册的后端Node代码,进行并发写入数据库数据,模拟线上突然QPS上升的场景。

const mysql = require('mysql2/promise');// 初始化数据库连接
let connection = null
async function initDb () {connection = await mysql.createConnection({host: 'bj-cynosdbmysql-grp-8znse6hq.sql.tencentcdb.com',user: 'root',password: 'Test123..',database: 'shop',port: 26668,});async function selectData () {for (let i = 0; i < 999999; i++) {let sql = "INSERT INTO `tb_seckill_goods` VALUES (943095, NULL, 'xxxxxxx', 'http://img14.360buyimg.com/n7/jfs/t23629/293/671156875/53383/8ab4ce73/5b3c24abN8090cb25.jpg', 825.26, 82.53, '2019-05-24 06:51:00', '2019-05-24 06:51:00', '1', '2019-05-23 16:00:00', '2019-05-23 17:59:00', 79, 75, 'xxxxx')";connection.execute(sql);}}selectData()
}
initDb()

在这里插入图片描述

可以看到,我们买的配置当时是最小0.5,最大1,按以前的经验来说,可能CPU就达到了100%,SQL的进程在阻塞了,而TDSQL-C MySQL Serverless版本,可以自动的将CPU由最大1扩大到上面的差不多5。

3. 总结:

可以看到TDSQL-C MySQL Serverless版本有高度弹性灵活的使用方式,根据实际使用量进行计费,非常适合对业务量波动较大的中小企业。用这种按需按量的计费模式,极大降低了使用成本和资源浪费。

在这里插入图片描述


七、 TDSQL-C MySQL 提效策略:

1. 权限管控:

我们可以通过上面设置的权限进行有效的控制角色的操作类型,防止团队中有些人误操作,传统的工作可能是DBA在分配,这里的可以直接设置,比较方便。可以看到当我们使用dev_chen进行insert操作时,直接就报错了。

在这里插入图片描述

2. SQL导入:

在Navicat中导入数据需要差不多5分钟,而在DMC管理平台导入数据节省了差不多一半的时间。

在这里插入图片描述

个人猜测,可能是DMC先把SQL上传到服务器上,然后,再相当于本地导入,速度就快很多。导出的速度也是比较快的,不过建议用zip压缩一下,这样可以节省流量,速度也比较快。

在这里插入图片描述

可以看到在Navicat中导入表数据的过程中,发现这张表有数据了。
在这里插入图片描述
但是在DMC上查询却是空的,只有在表导完数据后,才能在下面这张图查出数据。
在这里插入图片描述在这里插入图片描述

3. Mysql 5.7迁移到8.0:

可以看到Mysql 5.7的表,在8.0中导入,有一些小报错,但是不影响使用。基本上可以100%进行迁移。

在这里插入图片描述

4. 总结:

在这里插入图片描述


八、 TDSQL-C MySQL 运维的能力:

用户可以通过“数据库智能管家DBbrain”强大的监控功能,来获得DB实例节点的数据磁盘使用率、日志磁盘使用率、链接数使用率、SQL请求量、慢查询量、备延迟耗时、异常情况、运营情况、健康报告等指标。

在这里插入图片描述

1. 诊断优化:

可以从整体来查看数据库的一些指标参数,如CPU、内存、存储、流量、健康得分等情况,其中,还能显示我们平时比较关心的慢SQL,在“诊断提示”中也有一些报警的提醒。

在这里插入图片描述

2. 诊断提示详情:

下图可以看到,我们模拟突然大量的写入,导致CPU的急剧增加,直接飙到了近80%,当然,也可以看到这个监控指标“cpu_use_rate”,也可以自己去设置一下告警值。
在这里插入图片描述
在这里插入图片描述

如下为慢SQL的诊断详情,可以看到这里大于等于1s执行时间的,会被记录为慢SQL。

在这里插入图片描述

3. 性能趋势:

可以对数据库的一个实时、历史走势的一个监控,包括CPU、内存、存储、流量、TPS、QPS、连接数、请求数等参数的折线图,通过这些参数,我们可以及时分析现有问题是什么,也可以对以往的负载做一个大概的评估,利用技术架构的升级。

在这里插入图片描述

4. 慢SQL分析:

慢SQL也是平时项目开发,比较关注的一个点,如下可以看到无论是插入、查询,或者有更新、删除的语句,只要超过阀值都会被记录为慢SQL,这个指标会直接影响项目功能的使用,及项目的质量。

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


九、 总结:

在这里插入图片描述

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

我也是在通过活动、自己动手操作手册、自己在项目中实践TDSQL-C MySQL 8.0,从0到1的由浅到深的了解,从一些论点实际去操作,了解到TDSQL-C MySQL确实能给我们的业务带来提效降本的方案,希望在以后能够在业务中去落地并实践TDSQL-C MySQL。

综上所述,可以看到TDSQL-C MySQL 是一个强大、灵活、可扩展的数据库中间件,适用于中大型企业级应用程序。如果需要寻找一种可靠、高性能、可扩展的数据库解决方案,TDSQL-C MySQL 版本是一个很不错的选择。

相关文章:

【腾讯云 TDSQL-C Serverless 产品测评】- 云原生时代的TDSQL-C MySQL数据库技术实践

一、活动介绍&#xff1a; “腾讯云 TDSQL-C 产品测评活动”是由腾讯云联合 CSDN 推出的针对数据库产品测评及产品体验活动&#xff0c;本次活动主要面向 TDSQL-C Serverless版本&#xff0c;初步的产品体验或针对TDSQL-C产品的自动弹性能力、自动启停能力、兼容性、安全、并发…...

计算机硬件基础

计算机硬件基础 教程&#xff1a;计算机硬件基础_哔哩哔哩_bilibili 一.计算机的分类 台式机、笔记本电脑、上网本、超薄笔记本、平板电脑、游戏本、智能手机、超级移动电脑、便携式电脑、车用电脑、工作站、服务器、工业电脑IPC、ECDIS 二.机箱 放硬件的地方、一般由钢和铝等…...

云计算和Docker分别适用场景

在大规模网络爬虫系统中&#xff0c;通过使用云计算和Docker技术&#xff0c;可以实现大规模网络爬虫系统的高效架构设计和部署。这种架构能够提供可扩展性、高可用性和灵活性&#xff0c;为爬虫系统的运行和管理带来便利。 云计算和Docker在大规模网络爬虫系统中有不同的业务…...

oracle 基础运用2

首先在电脑上安装PLSQL developer&#xff0c;这个是oracle图形化连接工具&#xff0c;然后安装win64_11gR2_client&#xff0c;这个是orace客户端&#xff0c;安装完成后可以在cmd命令行输入sqlplus命令进行验证&#xff0c;如图表示安装成功。 作为sys的连接应该是SySDBA或Sy…...

ThinkPHP 资源路由的简单使用,restfull风格API

ThinkPHP 资源路由的简单使用&#xff0c;restfull风格API 一、资源控制器二、资源控制器简单使用 一、资源控制器 资源控制器可以轻松的创建RESTFul资源控制器&#xff0c;可以通过命令行生成需要的资源控制器&#xff0c;例如生成index应用的TestR资源控制器使用&#xff1a…...

利用前缀树获取最小目录

一、任务名&#xff1a; 开发最小目录工具 二、任务描述 开发工具&#xff0c;从桶清单文件中列举出所有最小目录&#xff0c;并列举出每一个最小目录中包含的文件总数与文件总量。 最小目录的解释&#xff1a; 有以下几个目录 a/b/1.txt a/b/2/txt a/3.txt a/b/c/ 则&…...

Java【手撕双指针】LeetCode 18. “四数之和“, 图文详解思路分析 + 代码

文章目录 前言一、四数之和1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表, 链表, 堆…...

OpenCV处理图像和计算机视觉任务时常见的算法和功能

当涉及到OpenCV处理图像和计算机视觉任务时&#xff0c;有许多常见的具体算法和功能。以下是一些更具体的细分&#xff1a; 图像处理算法&#xff1a; 图像去噪&#xff1a;包括均值去噪、高斯去噪、中值滤波等&#xff0c;用于减少图像中的噪声。 直方图均衡化&#xff1a;用…...

Flutter实现StackView

1.让界面之间可以嵌套且执行动画。 2.界面的添加遵循先进后出原则。 3.需要使用AnimateView&#xff0c;请看我上一篇博客。 演示&#xff1a; 代码&#xff1a; Stack: import package:flutter/cupertino.dart;///栈&#xff0c;先进后出 class KqWidgetStack {final Lis…...

c++ future与promise

C11 标准中 头文件中包含了以下几个类和函数&#xff1a; Providers 类&#xff1a;std::promise, std::package_taskFutures 类&#xff1a;std::future, shared_future.Providers 函数&#xff1a;std::async()其他类型&#xff1a;std::future_error, std::future_errc, st…...

在x86机器上的Docker运行arm64容器

1. 引言 工作中常用电脑主机CPU为x86架构&#xff0c;有时由于产品需要&#xff0c;我们需要编译aarch64架构的SDK或者应用程序供使用或者测试。 一种比较快捷的方式是使用aarch64的CPU构建相应操作系统&#xff0c;实现真机运行。但在无arm架构CPU环境下&#xff0c;我们可否…...

centos7删除乱码文件

centos7删除乱码文件1. 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.解释 当文件名为乱码的时候&#xff0c;无法通过键盘输入文件名&#xff0c;所以在终端下就不能直接利用rm&#xff0c;mv等命令管理文件了。 但是每个文件都有一个i节点号&#xff0c;可以通过…...

uni-app里使用webscoket

实现思路和vue中是一样的。如果想看思路可以看这篇文章&#xff1a;websocket 直接上可以运行的代码&#xff1a; 一、后端nodeJS代码&#xff1a; 1、新建项目文件夹 2、初始化项目&#xff1a; npm init -y 3、项目里安装ws npm i ws --save 4、nodeJS代码&#xff1…...

jdk17+springboot使用webservice,踩坑记录

这几天wms对接lbpm系统&#xff0c;给我的接口是webservice的&#xff0c;老实说&#xff0c;这个技术很早&#xff0c;奈何人家只支持这个。 环境说明&#xff1a;JDK17 springboot2.6.6。网上很多教程是基于jdk8的&#xff0c;所以很多在17上面跑不起来。折腾两天&#xff0c…...

计算机网络文件拆分—视频流加载、断点续传

视频流加载 视频流加载的原理是通过网络传输和播放器解码来实现的。 首先&#xff0c;视频文件会被分成一系列小的数据包&#xff0c;通常是以流的形式传输&#xff0c;这些数据包通过网络传输到用户设备。在传输过程中&#xff0c;可以采用各种协议&#xff0c;如HTTP、RTSP…...

JVM 给对象分配内存空间

指针碰撞空闲列表TLAB 为对象分配空间的任务实际上便等同于把一块确定大小的内存块从Java堆中划分出来。 指针碰撞&#xff1a;&#xff08;Bump The Pointer&#xff09; 堆的内存是绝对规整的&#xff0c;内存主要分为两部分&#xff0c;所有使用过的内存被放在一边&#x…...

Excel·VBA二维数组组合函数、组合求和

目录 1&#xff0c;二维数组组合函数举例 2&#xff0c;组合求和 之前的文章《ExcelVBA数组组合函数、组合求和》和《ExcelVBA数组排列函数》&#xff0c;都是针对一维数组的组合和排列 二维数组组合&#xff1a;对一个m行*n列的二维数组&#xff0c;每行抽取1个元素进行组合&a…...

调用自实现MyGetProcAddress获得CreateFileA函数并调用创建写入文件

写文件如下 #include <iostream> #include <Windows.h>typedef HANDLE(WINAPI* CreateFileAFunc)(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);DWORD MyGetProcAddress(_In_ HMODULE hModule,_In_ LPCSTR lpProcName ){PIMAGE_DOS_HEADE…...

Leetcode 191.位1的个数

编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 1 的个数&#xff08;也被称为汉明重量&#xff09;。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;如 Java&#xff09;中…...

安防监控视频平台EasyCVR视频汇聚平台调用接口出现跨域现象的问题解决方案

视频监控汇聚EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视…...

Python中的一些常用操作

文章目录 一. Python操作之-- 使用Python 提取PDF文件中的表格数据&#xff01;二&#xff1a;三&#xff1a; Python中的 staticmethodclassmethod方法四&#xff1a; 反斜杠 \五&#xff1a; 终端的解释器提示符号修改六&#xff1a; python使用json.dumps输出中文七&#xf…...

go语言调用python脚本

文章目录 代码gopython 在 go语言中调用 python 程序&#xff0c;你可能会用到 代码 亲测 go 测试 go 文件 func TestR(t *testing.T) {// 设置要执行的Python脚本和参数scriptPath : "../nansen.py"arg1 : "nansen"// 执行Python脚本cmd : exec.Comm…...

2.3 【MySQL】命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中&#xff0c;但是有一些选项是专门为命令行设计的&#xff0c;比方说defaults-extra-file 、 defaults-file 这样的选项本身就是为了指定配置文件路径的&#xff0c;再放在配置文件中使用就没啥意义了。 如果同一个启动选…...

外部库/lib/maven依赖项 三者关系

外部库(存放项目初始配置的jar包)(它的文件夹里并没有包含lib文件夹的引的外部的依赖的jar包) lib(存放外部导入到项目的依赖的jar包) maven依赖项(管理项目所有的jar包依赖) 三者存放jar包的关系 项目所依赖的全部的jar包 maven依赖项的jar包 外部库中的jar包 lib中的…...

在线制作作息时间表

时光荏苒&#xff0c;岁月如梭&#xff0c;人们描述时光易逝的句子&#xff0c;多如星河。 一寸光阴一寸金&#xff0c;寸金难买寸光阴。 人生就是一段时间而已&#xff0c;所以我明白了一个道理 人生之中最大的浪费就是时间的浪费 因此我想我们教给我们孩子重要的一课应该也是…...

他们朝我扔泥巴(scratch)

前言 纯~~~属~~~虚~~~构~~~&#xff08;同学看完短视频要我做&#xff0c;蟹蟹你&#xff09; 用scratch做的&#xff0c;幼稚得嘞(&#xffe3;_&#xffe3;|||)呵呵&#xff08;强颜欢笑&#xff09; 完成视频 视频试了好久&#xff0c;就是传不上来&#xff0c;私信我加我…...

docker部署前端项目保姆级教程

本地启动docker&#xff08;有不会启动的吗&#xff1f;下载docker&#xff08;小海豚&#xff09;双击起来就行&#xff09; 准备阿里云账号&#xff08;免费&#xff09; 没有就去注册一个&#xff0c;记住密码后面要用到 官网地址&#xff1a;阿里云登录 - 欢迎登录阿里云…...

《C和指针》笔记13: static关键字总结

这里对static关键字做一下总结&#xff0c;可以回顾一下前面两篇博客的文章。 《C和指针》笔记11: external和internal链接属性 《C和指针》笔记12: 存储类型&#xff08;自动变量、静态变量和寄存器变量&#xff09; 当它用于函数定义时&#xff0c;或用于代码块之外的变量声…...

Docker harbor私有仓库部署与管理

一、搭建本地私有仓库二、Harbor私有仓库部署与管理1、Harbor概述2、Harbor的特性3、Harbor的核心组件3.1 Proxy3.2 Registry3.3 Core services3.3.1 UI&#xff08;harbor-ui&#xff09;3.3.2 WebHook3.3.3 Token 服务 3.4 Database&#xff08;harbor-db&#xff09;3.5 Log…...

解锁Selenium的力量:不仅仅是Web测试

Selenium简介 Selenium&#xff0c;作为Web应用测试的领军者&#xff0c;已经成为了无数开发者和测试人员的首选工具。它不仅仅是一个自动化测试工具&#xff0c;更是一个强大的Web应用交互框架。 Selenium的起源与发展 Selenium的历史可以追溯到2004年&#xff0c;由Jason Hu…...