oracle alter table modify 性能,与MySQL ALTER TABLE相比,Oracle架构的性能变化?

当使用MySQL MyISAM表并发出ALTER TABLE语句来添加列时,MySQL会创建一个临时表,并在覆盖原始表之前将所有数据复制到新表中.

如果该表包含大量数据,则此过程可能非常慢(尤其是在重建索引时),并且要求您在磁盘上有足够的可用空间来存储表的2个副本.这非常烦人.

添加列时Oracle如何工作?在大桌子上快吗?

我总是对能够在没有大量停机时间的情况下进行模式更改感兴趣.我们总是在我们的软件中添加新功能,这些功能需要在每个版本中更改架构.任何建议表示赞赏……

解决方法:

将没有数据的列添加到Oracle中的大表通常非常快.没有数据的临时副本,也不需要重建索引.当您想要将列添加到大型表并将数据回填到所有现有行的新列时,通常会出现缓慢,因为现在您正在讨论影响大量行的UPDATE语句.

添加列可能会导致行迁移.如果您有一个80%已满4行的块,并且您添加的列将逐渐增加每行30%的大小,那么您最终将达到Oracle必须将4行中的一行移动到另一行的点块.它通过在旧块中留下指向新块的指针来执行此操作,这会导致对该迁移行的读取需要更多I / O.消除迁移的行可能有些昂贵,虽然假设您使用企业版通常可以在没有停机的情况下进行,但如果您有一些停机时间通常会更容易.但是,行迁移是您通常只需要担心的问题.如果您知道某些表的行大小可能在将来大幅增加,则可以通过为表指定更大的PCTFREE设置来提前缓解问题.

标签:mysql,oracle

来源: https://codeday.me/bug/20190726/1548242.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值