---
title: 对表中某列减少列类型长度或精度时，为何会阻塞与该表相关的 DML 语句-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于对表中某列减少列类型长度或精度时，为何会阻塞与该表相关的 DML 语句相关的常见问题和使用技巧，帮助您快速解决对表中某列减少列类型长度或精度时，为何会阻塞与该表相关的 DML 语句的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 对表中某列减少列类型长度或精度时，为何会阻塞与该表相关的 DML 语句

更新时间：2026-05-19 09:51

适用版本： V4.0.x、V4.1.x、V4.2.x 内容类型：Troubleshoot  

## 问题描述

在 OceanBase 4.x 版本中，假设表 tb1 的某一个列 C7 是 varchar(20)，通过如下命令减少其长度为 18：

```shell
obclient> alter table tb1 modify column C7 varchar(18);

```

此时与 tb1 相关的 DML 会被阻塞，如 insert 语句会被阻塞。

## 问题原因

减少列类型长度或精度时，OceanBase 数据库需要锁表，锁表后需要重整该表的数据以达到减少列类型长度的目的，数据重整完毕后才会解开表锁，故在该 DDL 执行期间，会阻塞其他 DML 请求。

## 问题的风险及影响

此类 DDL 执行后，会阻塞业务相关请求，进而可能导致严重业务问题。

## 适用版本

OceanBase 数据库 V4.x 版本

## 影响的租户

OceanBase 数据库中的 SYS 租户、MySQL 租户、Oracle 租户。

## 解决方法

通过 `kill session id` 命令终止掉 DDL 命令的执行。

上一篇

[创建表报 Row size too large 的原因及解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002910604)

下一篇

[truncate table 后插入数据报主键重复的问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000006084951) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
