如何创建分布式数据库TDSQL?
分布式数据库TDSQL的创建
一、
TDSQL(Tencent Distributed SQL)是由腾讯云提供的一种分布式数据库解决方案,它支持MySQL版和PostgreSQL版,本文将详细介绍如何在腾讯云上创建一个TDSQL实例,包括实例的配置、购买步骤以及一些高级功能如序列(Sequence)的使用。
二、创建TDSQL实例
登录控制台
您需要登录到腾讯云的控制台,访问[腾讯云官网](https://cloud.tencent.com/),点击右上角的“控制台”按钮,输入您的账号和密码进行登录。
进入TDSQL控制台
在控制台首页,找到“数据库”菜单,点击“TDSQL”,进入TDSQL控制台后,您可以看到实例列表页面。
创建实例
3.1 计费模式选择
按量计费:适用于业务量有瞬间大幅波动的场景。
包年包月:适用于业务量有较稳定的长期需求。
3.2 地域选择
选择一个靠近您业务部署地点的地域,以减少网络延迟,注意,不同地域的云产品内网不通,购买后不能更换。
3.3 网络配置
建议选择与您的云服务器相同的私有网络,以便通过内网连接云服务器和数据库。
3.4 实例类型选择
集群版:由多个节点构成,提供高性能高可用的数据库服务,适用于企业生产环境。
基础版:由单个节点构成,费用较低,但不具备高可用能力,仅适用于个人用户学习体验产品功能。
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如何创建”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
暂无评论,1人围观