如何创建分布式数据库TDSQL?

小贝
预计阅读时长 18 分钟
位置: 首页 快手 正文

分布式数据库TDSQL的创建

分布式数据库TDSQL如何创建

一、

TDSQL(Tencent Distributed SQL)是由腾讯云提供的一种分布式数据库解决方案,它支持MySQL版和PostgreSQL版,本文将详细介绍如何在腾讯云上创建一个TDSQL实例,包括实例的配置、购买步骤以及一些高级功能如序列(Sequence)的使用。

二、创建TDSQL实例

登录控制台

您需要登录到腾讯云的控制台,访问[腾讯云官网](https://cloud.tencent.com/),点击右上角的“控制台”按钮,输入您的账号和密码进行登录。

进入TDSQL控制台

在控制台首页,找到“数据库”菜单,点击“TDSQL”,进入TDSQL控制台后,您可以看到实例列表页面。

创建实例

3.1 计费模式选择

按量计费:适用于业务量有瞬间大幅波动的场景。

分布式数据库TDSQL如何创建

包年包月:适用于业务量有较稳定的长期需求。

3.2 地域选择

选择一个靠近您业务部署地点的地域,以减少网络延迟,注意,不同地域的云产品内网不通,购买后不能更换。

3.3 网络配置

建议选择与您的云服务器相同的私有网络,以便通过内网连接云服务器和数据库。

3.4 实例类型选择

集群版:由多个节点构成,提供高性能高可用的数据库服务,适用于企业生产环境。

分布式数据库TDSQL如何创建

基础版:由单个节点构成,费用较低,但不具备高可用能力,仅适用于个人用户学习体验产品功能。

3.5 集群架构选择

对等架构:计算层SQL Engine与数据层TDStore合并为一个物理节点中,减少硬件节点数量和跨节点通信,从而降低成本并提高性能。

分离架构:计算层SQL Engine与数据层TDStore分别在不同的物理节点中。

3.6 其他配置

分片数量/规格/硬盘:建议分片数量选择2、4、8,否则会导致数据倾斜的问题,分片配置请参见分片配置文档。

所属项目:选择数据库实例所属的项目,缺省设置为默认项目。

:便于分类管理实例资源。

安全组:安全组创建与管理请参见云数据库安全组文档。

实例名:可选择创建后命名或立即命名。

实例ID长度兼容:支持36位的实例ID。

支持字符集:支持UTF8、LATIN1、GBK、UTF8MB4、GB18030字符集。

表名大小写敏感:敏感(lower_case_tables = 0)、不敏感(lower_case_tables = 1),该参数为初始化参数,数据库初始化完成后无法修改。

开启强同步:支持强同步(可退化)、异步,详细介绍请参见强同步文档。

3.7 完成购买

确认所有配置无误后,单击“立即购买”,支付完成后,返回实例列表,待实例状态变为运行中,即可进行后续操作。

三、创建数据库和表

创建数据库

在TDSQL控制台的集群列表中,找到目标集群,单击集群ID或操作列的管理,进入集群管理页面,在集群管理页面,选择数据库管理页,单击创建数据库,在弹出的对话框中,配置如下参数后,单击确定:

参数 说明
数据库名 输入数据库名,由大小写字母、数字、中划线(-)、下划线(_)组成,字母开头,字母或是数字结尾,最长64字符。
支持字符集 设置数据库支持的字符集,字符集介绍可参见MySQL官方文档。
排序规则 设置数据库的排序规则,排序规则介绍可参见MySQL官方文档。
账号授权 单击添加,然后选择授权账号、授权给账号的权限、主机信息,也支持删除该授权列记录。
备注 为新建的数据库备注,最多支持输入256个字符。

创建表

TDSQL分布式实例支持创建分表、单表和广播表,分表即自动水平拆分的表(Shard表),水平拆分是基于分表键采用一致性Hash方式,根据计算后的值分配到不同的节点组中的一种技术方案,可以将满足对应条件的行将存储在相同的物理节点组中,这种场景称为组拆分(Groupshard),可以迅速提高应用层联合查询等语句的处理效率,TDSQL支持LIST、RANGE、HASH三种类型的一级分区,同时支持RANGE、LIST两种格式的二级分区。

创建一级range| list分区表语法:

CREATE TABLE [IF NOT EXISTS] tbl_name    [(create_definition)]    [local_table_options]TDSQL_DISTRIBUTED BY range|list (column_name) [partition_options]create_definition: {    col_name column_definition  | {INDEX | KEY} [index_name] [index_type] (key_part,...)      [index_option] ...  | [INDEX | KEY] [index_name] [index_type] (key_part,...)      [index_option] ...  | [CONSTRAINT [symbol]] PRIMARY KEY      [index_type] (key_part,...)      [index_option] ...  | [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]      [index_name] [index_type] (key_part,...)      [index_option] ...}column_definition: {    data_type [NOT NULL | NULL] [DEFAULT]      [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY]      [COMMENT 'string']      [COLLATE collation_name]      [COLUMN_FORMAT {FIXED | DYNAMIC | DEFAULT}]      [ENGINE_ATTRIBUTE [=] 'string']  | data_type      [UNIQUE [KEY]] [[PRIMARY] KEY]      [COMMENT 'string']}key_part: {col_name [(length)]} [ASC | DESC]index_type:USING {BTREE}index_option: { index_type | COMMENT 'string'}[local_table_options]Local_table_option: {AUTO_INCREMENT [=] value  | [DEFAULT] CHARACTER SET [=] charset_name  | [DEFAULT] COLLATE [=] collation_name  | COMMENT [=] 'string'  | ENGINE [=] engine_name  | ROW_FORMAT [=] {DEFAULT | DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT}  | STATS_AUTO_RECALC [=] {DEFAULT | 0 | 1}  | STATS_PERSISTENT [=] {DEFAULT | 0 | 1}  | STATS_SAMPLE_PAGES [=] value)}partition_options:    PARTITION BY        | RANGE{(expr)}        | LIST{(expr)}    [(partition_definition [, partition_definition] ...)]partition_definition:    PARTITION partition_name        [VALUES            {LESS THAN {(expr | value_list) | MAXVALUE}            |            IN (value_list)}]        [[STORAGE] ENGINE [=] engine_name]        [COMMENT 'string']

四、使用Sequence

在TDSQL分布式数据库中,Sequence用于生成全局唯一的递增数值,Sequence关键字和MariaDB/Oracle兼容,但是保证分布式全局递增且唯一,具体使用如下:

创建Sequence

CREATE TDSQL_SEQUENCE sequence_name
[START WITH n]
[{TDSQL_MINVALUE | TDSQL_NOMINVALUE} n | TDSQL_NOMINVALUE]
[{TDSQL_MAXVALUE n | TDSQL_NOMAXVALUE}]
[TDSQL_INCREMENT BY n]
[{TDSQL_CYCLE | TDSQL_NOCYCLE}]
[{TDSQL_CACHE | TDSQL_NOCACHE} n];

示例:

create tdsql_sequence test.s1 start with 12 tdsql_minvalue 10 maxvalue 50000 tdsql_increment by 5 tdsql_nocycle;
create tdsql_sequence test.s2 start with 12 tdsql_minvalue 10 maxvalue 50000 tdsql_increment by 1 tdsql_cycle;

删除Sequence

DROP SEQUENCE sequence_name;

示例:

drop tdsql_sequence test.s1;

查询Sequence

SHOW CREATE SEQUENCE sequence_name;

示例:

show create sequence test.s1;

使用Sequence获取下一个数值

SELECT tdsql_nextval('sequence_name');
SELECT NEXT VALUE FOR sequence_name;

示例:

select next value for test.s2;

获取上一次的值以连接相关数据

如果之前没有用nextval命令获取过数据,数值将返回为0。

SELECT tdsql_lastval('sequence_name');
SELECT PREVIOUS VALUE FOR sequence_name;

示例:

select last value for test.s2;

设置下一个序列数值

ALTER SEQUENCE sequence_name RESTART [WITH] n;

示例:

alter sequence test.s1 restart with 100;

五、相关问题与解答栏目

问题1:如何选择适合的TDSQL实例类型?

答:选择适合的TDSQL实例类型主要取决于您的业务需求和预算,如果您的业务需要高性能和高可用性,建议选择集群版实例;如果您只是个人用户学习体验产品功能,可以选择基础版实例,还需要考虑计费模式(按量计费或包年包月)、地域、网络配置等因素。

问题2:如何优化TDSQL数据库的性能?

答:优化TDSQL数据库的性能可以从以下几个方面入手:选择合适的实例类型和配置、合理设计数据库架构(如分片、分区等)、优化SQL查询语句、调整数据库参数(如缓存大小、连接数等)、定期维护和监控数据库等,具体优化措施需要根据您的业务场景和数据库实际情况来制定。

小伙伴们,上文介绍了“分布式数据库TDSQL如何创建”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

-- 展开阅读全文 --
头像
如何实现分布式数据库的高效同步?
« 上一篇 2024-12-16
FPDK.JS是什么?探索这一神秘代码库的秘密
下一篇 » 2024-12-16
取消
微信二维码
支付宝二维码

发表评论

暂无评论,1人围观

目录[+]