首页 >>  正文

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

蓬潘泻1835怎么更新oracle中的number类型字段 -
终适旺15323571576 ______ 1. 将数据备份到零时表 CREATE GLOBAL TEMPORARY TABLE my_temp_table ON COMMIT PRESERVE ROWS AS SELECT c.id,c.course_credit FROM course c; -- 2. 将要修改精度的字段设为“NULL”,等价于删除该字段的所有记录 UPDATE course c SET c.course_credit = NULL; -- 3. 修改course表,course_credit字段的类型改为number(2,1) ALTER TABLE course MODIFY course_credit NUMBER(2,1);

蓬潘泻1835oracle 已经建好的表怎么修改字段大小? -
终适旺15323571576 ______ 根据字段类型决定 alter table 表名 modify 字段名 varchar2(长度); 或 alter table 表名 modify 字段名 number(长度 ); 只能改大. 想改小只能重新建表将数据导到新表,再将旧表drop掉.

蓬潘泻1835怎样修改Oracle数据库中,已经建立好的表的字段名?表里面已经有很多记录. -
终适旺15323571576 ______ alter table test_tab rename column col_AAA to col_BBB;--修改test_tab 字段名col_AAA 为col_BBB

蓬潘泻1835【原】Oracle 如何修改列的数据类型 -
终适旺15323571576 ______ alter table xxx modify yyy varchar2(2); 其中,xxx 为表名,yyy为列名,最后为要改成的数据类型. 希望可以帮到你

蓬潘泻1835如何修改oracle数据库表字段的属性??! -
终适旺15323571576 ______ 1.select constraint_name,table_name from dba_cons_columns where table_name='xxx';找出这个约束的名称 2.alter table xxx drop constraint yyy(第一步查出来的名字) 3.alter tablexxx modify iSubscribeState varchar2(20);

蓬潘泻1835Oracle 如何修改列不为空的时候的数据类型 -
终适旺15323571576 ______ –新增临时列 alter table tablename add filedname_temp number(2); –将临时列的值置空 update zyt set id_temp=null; -----#alter table tablename modify filedname null; –将要更新的字段值挪到临时列,并置空该列 update tablename set filedname_...

蓬潘泻1835Oracle中如何创建和使用记录呢?
终适旺15323571576 ______ ①创建记录类型 语法: TYPE 记录名 IS RECORD ( filed1 type1 [NOT NULL] [:=eXPr... filedN 注意: 表字段类型修改后,还需要修改记录字段类型,有时候可能会忘记,从...

蓬潘泻1835SQL语句如何修改主键字段的字段类型类型 -
终适旺15323571576 ______ 首先,修改主键字段的字段类型,肯定是要先删除主键才能操作的 --【1.查找主键】 --SQLSERVER select name as pkName from dbo.sysobjects where xtype='PK' and parent_obj=(select id from dbo.sysobjects where name='表名') --...

蓬潘泻1835oracle怎么选择一个表所有字段 -
终适旺15323571576 ______ select * from table; select t.*from table_1 t;

蓬潘泻1835oracle可否直接改表字段数据类型? -
终适旺15323571576 ______ 好像不能直接转,要把varchar2类型先转成long SQL> desc test; Name Type Nullable Default Comments ---- ------------ -------- ------- -------- COL VARCHAR2(10) Y SQL> alter table test modify col long; Table altered SQL> desc test; Name Type ...

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