假设我们在 Oracle 数据库中有数百万行的表 - 重命名它有多昂贵?我的猜测(并希望)只是元数据更改,因此表的大小没有影响,但我想验证一下(找不到任何有用的结果)。
是的,这只是元数据更新。
SQL> create table t1 as
with g as (select * from dual connect by level <= 1000)
select 'HELLO' as c1 from g,g,g where rownum <= 1e7;
Table created.
SQL> select bytes/1024/1024 from user_segments where segment_name = 'T1';
BYTES/1024/1024
---------------
128
SQL> select
s.value/1024/1024
from v$mystat s
natural join v$statname sn
where sn.name = 'redo size';
S.VALUE/1024/1024
-----------------
131.848621
SQL> alter table t1 rename column c1 to c2;
Table altered.
SQL> select
s.value/1024/1024
from v$mystat s
natural join v$statname sn
where sn.name = 'redo size';
S.VALUE/1024/1024
-----------------
131.851715
Run Code Online (Sandbox Code Playgroud)
上述语句只产生了少量的重做。
但还有其他方面:所需的锁和相关 PL/SQL 对象的失效。
归档时间: |
|
查看次数: |
878 次 |
最近记录: |