PostgreSQL千万数据量下的DDL变更影响

来源:这里教程网 时间:2026-03-14 21:21:03 作者:

 之前做过Oracle和MySQL DDL的时候有哪些情况要注意的。一直没有做PostgreSQL的,今天这个用实验说明一下。这里用的是15版本。

[pg15@dev-dbteam-148180 ~]$ psql

psql (15.3)

Type "help" for help.

postgres=# \d

               List of relations

 Schema |       Name        | Type  |  Owner  

--------+-------------------+-------+----------

 public | walminer_contents | table | postgres

(1 row)

创建一个空的数据库

postgres=# create database p;

CREATE DATABASE

postgres=# \c p

You are now connected to database "p" as user "postgres".

                                                             ^

创建一个和MySQL实验时候一模一样表结构的表。

p=# create table thousand (id int,a int,name varchar(10),time date);

CREATE TABLE

写了一个存储过程,批量写入1000万数据。

编辑

增加一个不带默认值的字段。

编辑

从实验得出结论,DDL在不到2毫秒完成。没有问题。

增加一个非空且带有默认值的字段,实验观察该DDL1毫秒完成,没有问题。

编辑

在这个千万级别的表上增加一个带默认值,但是没有非空的DDL。

编辑

从实验结果看只用1毫秒,DDL没有阻塞,没有问题。

最后一个场景,增加一个字段,并且对字段进行扩容,而且超过之前在MySQL中256的界限。

编辑

从实验结果看都不超过2毫秒,DDL没有阻塞,没有问题。

总体说来至少从PostgreSQL15版本的使用来看表结构变更的DDL,是没有问题的。

相关推荐