之前做过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,是没有问题的。
