首页 >>  正文

oracle修改表结构字段长度

来源:baiyundou.net   日期:2024-09-23

PingCAP技术

该技术由PingCAP投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新技术突破榜单及奖项”评选。

目前数据定义语言(data definition language,DDL)语句的分布式调度系统主要分为如下集中实现:

1、以Oracle,MySQL等传统数据库为例的传统单机或者集群系统。通常采用实现一个Meta data Lock系统,通过对于需要进行DDL变更的对象加锁的方式,来协调各种DDL语句执行的先后顺序。达到并发效果。

2、分布式数据库系统Ocean Base,TDSQL的数据库也是通过采取在分布式系统中实现一种类似MDL锁的方式来达成并发DDL语句调度的效果。

如何保证在多个DDL worker(也称之为任务执行单元)在并发执行DDL任务的时候,不会造成用户数据库中对象定义或者对象存储的数据的不一致性,是需要解决的问题。

本申请实施例提供了一种DDL任务的并行处理方法、计算节点、电子设备、计算机可读存储介质,可以解决现有技术的上述问题。提供了一种DDL任务的并行处理方法、计算节点及电子设备,涉及数据库领域。该方法包括:获得作业任务表,作业任务表用于记录未处理完成的DDL任务的相关信息,相关信息包括DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式;确定正在执行的第一DDL任务,从作业任务表中确定符合预先确定的任务并行处理规则的第二DDL任务;将目标第二DDL任务与第一DDL任务并行处理。本申请实施例实现逻辑简单,并且可扩展性强,能够适应不同的数据块形态的部署,不存在现有技术那样依赖类似于元数据锁方式协调执行顺序达成并发DDL调度效果的限定。

技术说明


TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。

数据库模式定义语言DDL(Data Definition Language),用来定义数据对象(数据库,表,字段)。它并非程序设计语言,而是SQL语言(结构化查询语言)的组成部分。SQL语言是在关系型数据库(诸如Mysql、SQL Server、Oracle等)里进行相关操作的标准化语言。SQL语言包括四种类型:数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。通过DDL,我们可以创建、修改和删除数据库、表、视图等对象。

目前数据定义语言语句的分布式调度系统主要分为如下集中实现:

1、以Oracle,MySQL等传统数据库为例的传统单机或者集群系统。通常采用实现一个Meta data Lock系统,通过对于需要进行DDL变更的对象加锁的方式,来协调各种DDL语句执行的先后顺序。达到并发效果。

2、分布式数据库系统Ocean Base,TDSQL的数据库也是通过采取在分布式系统中实现一种类似MDL锁的方式来达成并发DDL语句调度的效果。

如何保证在多个DDL worker(也称之为任务执行单元)在并发执行DDL任务的时候,不会造成用户数库中对象定义或者对象存储的数据的不一致性,是需要解决的问题。

TiDB DDL 模块从设计之初就选择了在线异步变更的模式,为 TiDB 的用户提供了不停机变更业务的服务能力。

本技术专利提供了一种DDL任务的并行处理方法,可以解决现有技术的上述问题。所述技术方案如下:

根据本专利实施例的一个方面,提供一种数据定义语言DDL任务的并行处理方法,由数据库系统中的目标计算节点执行,所述方法包括:

l获得作业任务表,所述作业任务表用于记录未处理完成的DDL任务的相关信息,所述相关信息包括DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式;

● 确定正在执行的第一DDL任务,从所述作业任务表中确定符合预先确定的任务并行处理规则的第二DDL任务,所述任务并行处理规则与DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式相关;

● 将所述目标第二DDL任务与所述第一DDL任务并行处理。

根据本专利实施例的另一个方面,提供了一种数据库系统中的目标计算节点,该节点包括:

● 作业任务表模块,用于获得作业任务表,所述作业任务表用于记录未处理完成的DDL任务的相关信息,所述相关信息包括DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式;

● 任务确定模块,用于确定正在执行的第一DDL任务,从所述作业任务表中确定符合预先确定的任务并行处理规则的第二DDL任务,所述任务并行处理规则与DDL任务进入数据库系统的顺序以及DDL任务对应的变更对象所处的数据模式相关;

● 并行处理模块,用于将所述第二DDL任务与所述第一DDL任务并行处理。

根据本专利实施例的另一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,处理器执行所述计算机程序以实现上述DDL任务的并行处理方法的步骤。

根据本专利实例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述DDL任务的并行处理方法的步骤。

本专利实施例提供的技术方案带来的有益效果是:

通过获取任务作业任务表,任务作业任务表中记录了至少一个DDL任务的相关信息,基于任务并行处理规则,从作业任务表中确定与处理中的第一DDL任务可并行处理的第二DDL任务,将第二DDL任务与第一DDL任务并行处理,实现逻辑简单,并且可扩展性强,能够适应不同的数据块形态的部署,不存在现有技术那样只能从队列中按排序选择DDL任务的限定。

本申请具有以下技术效果:

1、方案实现逻辑简单,可扩展性强;

2、方案能够充分利用集群整体资源,自动进行任务的负载均衡,具备很强的在线扩展性;

3、能够适应不同的数据库形态的部署;

a)单实例数据库部署

b)集群单主节点,全集群分布式DDL任务调度

c)集群分布式DDL任务调度(多主节点)

4、对于分布式系统中故障恢复有特别良好的表现,不会像锁实现方案中会遇到分布式死锁检测的复杂度问题,或者是单点锁中控的性能和故障单点问题;

5、故障恢复简单,高效,本方案能够在基本上无需额外操作的情况下,使得DDL任务调度恢复正常;

6、很容易在本模型实现特定的分布式调度规则,将特定的DDL任务调度到特定的计算节点上执行,例如通过数据的位置,多租户的可用计算节点等等条件来调度。

★专利申请号/公开号:CN115687378A

开发团队

·带队负责人姓名:黄文俊

黄文俊,PingCAP TiDB 数据服务研发工程师,同时也是 TiDB 中 CTE 功能开发的负责人,致力于 TiDB DDL 的演进。

团队其他重要成员姓名:李霞、黄潇、刘奇、黄东旭、崔秋

·隶属机构:PingCAP

PingCAP 是业界领先的企业级开源分布式数据库企业,提供包括开源分布式数据库产品、解决方案与咨询、技术支持与培训认证服务,致力于为全球行业用户提供稳定高效、安全可靠、开放兼容的新型数据服务平台,解放企业生产力,加速企业数字化转型升级。

相关评价


DDL 操作是数据库管理操作中最繁重的一种,本技术专利提供了一种DDL任务的并行处理方法,实现逻辑简单,并且可扩展性强,能够适应不同的数据块形态的部署。

——某头部智能硬件

该专利使得TiDB 的 DDL 更加灵活,更加高效,同时新的底层架构也为后续元数据锁和分布式任务等功能打下了坚实的基础。

——某互联网教育公司顾问
DBA 陶杰

","gnid":"945b316720d50aa73","img_data":[{"flag":2,"img":[{"desc":"","height":"459","title":"","url":"https://p0.ssl.img.360kuai.com/t01cb92f80e1f9cc192.png","width":"1080"}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"pika","pub_time":1704978861000,"pure":"","rawurl":"http://zm.news.so.com/90186d16f209baef217ba52c3341466b","redirect":0,"rptid":"91dabbbad5de3217","rss_ext":[],"s":"t","src":"数据猿","tag":[{"clk":"ktechnology_1:mysql","k":"mysql","u":""}],"title":"【金猿技术展】TiDB DDL任务的并行处理方法——打造更高效更灵活的DDL

诸弦钟643用oracle创建一个表 -
邰姜琰17847819244 ______ 创建表语句 -- Create table create table CAPITAL_ADJUST ( CAPITAL_ID VARCHAR2(10), CAPITAL_NAME VARCHAR2(50), TYPE VARCHAR2(10), BELONG VARCHAR2(50), IN_DEP VARCHAR2(50), ID VARCHAR2(10) not null, IN_DEP...

诸弦钟643ORACLE 创建一个表 -
邰姜琰17847819244 ______ 创建表可以用create语句来实现,:create table tablename(id varchar2(20));//格式就是create table 表名(字段1 类型,字段2 类型……).扩展:创建表空间:CREATE TABLESPACE TBS_ETL_DATA LOGGING DATAFILE 'G:\oracle\product\...

诸弦钟643SQL语句中修改表结构的命令是什么 -
邰姜琰17847819244 ______ ALTER TABLE 表名 [ADD 新列名 数据类型 完整性约束] [DROP 完整性约束名] [MODIFY 列名 数据类型] 其中 ADD 子句用于添加新的列或者完整性约束,比如外键等 DROP子句用于删除指定名字的完整性约束 MODIFY子句用于修改原有列定义,包括列名和数据类型 如:alter table student add scom DATE 给student 添加入学时间一列

诸弦钟643如何定义SQL主键 -
邰姜琰17847819244 ______ 建立SQL主键有两种方法:一种是在数据库提供的GUI环境中抄建立,另一种是通过SQL语句执行建立,下面分别介绍. 1.在数据库提供的GUI环境中建立(以SQL7为例)知. 输入表信息后按Ctrl键同时选中多行源码天空 ,然后点上面的主键按钮就行了. 2.通过SQL语句执行建立.又分两种,一是在建表道语句中直接写,二是建表之后更改表结构. 在建表语句中直接写: CreateTable表名(字段名1IntNotNull, 字段名2nvarchar(13)NotNullPrimaryKey(字段名1,字段名2), 字段名3字段名N) 建表之后更改表结构:

诸弦钟643oracle数据库alter table 语句是否可以同时将修改、删除、添加写在一条语句中? -
邰姜琰17847819244 ______ 不能,alter table是修改表结构的,不能用来增删改表记录.增删改表记录的语法是(insert、update/delete)

诸弦钟643Oracle 如何修改表字段名为大写
邰姜琰17847819244 ______ 可以先建立表结构然后在导入数据. 比如create table a(a number);字段名称是a 比如create table a(A number);字段名称是a 比如create table a(“A” number);字段名称是A

诸弦钟643用sql语句和用modify structure命令修改表结构有什么不同
邰姜琰17847819244 ______ 用sql语句修改表结构有两种方法:调用系统存储过程(不同环境用法不同)、直接修改系统表. 直接修改系统表的办法不推荐使用,这是最不安全的方法,容易造成不可恢复的错误.另外一个问题是,这种方法需要很高的SQL权限,标准权限的用户无法使用. modify structure命令,是标准的修改表结构方式.

诸弦钟643如何在Oracle中复制表结构和表数据
邰姜琰17847819244 ______ 1. 复制表结构及其数据: create table table_name_new as select * from table_name_old 2. 只复制表结构: create table table_name_new as select * from table_name_old where 1=2; 或者: create table table_name_new like table_name_old 3. ...

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024