电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>C语言|源代码>在Postgres中进行数据库迁移时会遇到哪些问题

在Postgres中进行数据库迁移时会遇到哪些问题

2017-09-27 | rar | 0.2 MB | 次下载 | 2积分

资料介绍

  随着数据库的增长与扩展,你需要对一些操作给予更多的关注。你可能没有完全意识到,在开发环境中执行应用程序时,执行某些操作的成本,与在生产环境中大相径庭。在某一时刻,我们中的大多数人都犯了错,在5分钟时开始运行一些迁移,过15分钟仍然在运行,突然间生产流量受到了影响。

  有两种操作发生的很频繁,每种操作都有一些简单的方法可以减少停机时间。让我们看看每一个操作,它们是如何工作的,以及如何以更安全的方式来处理它们。

  添加新列

  在Postgres中添加一个新列实际上代价是很低的。当你这样做的时候,它会更新对于已有列时刻的跟踪,它几乎是瞬时的。当对某个列有一些约束时,这一部分就会变得很昂贵。一个约束可以是一个主键或者外键,或者是一些唯一性约束。 Postgres不得不扫描表中的所有记录以确保没有违反这些约束。添加诸如“非空”等一些约束时,可能会有一些违反,但这不是最常见的原因。

  造成添加新列迟缓最常见的原因是大部分的框架中为新列设置缺省值太过简单。对于所有的新记录这是一回事,但是对于已有的表来说,这意味着数据库不得不要读取所有的记录并且向这些记录中重写新的缺省值。对于只有几百条记录的表来说,这还不算太糟,但是对于上千万条记录的表来说,这时间就无法容忍了 。

  简而言之,在添加新列时,如果将其设为非空或者在创建是设置一个缺省值都会给你带来麻烦。解决之道是不要这样做。但是,如果你需要一个缺省值或者不想字段为空时该怎么办。这有一些你可以采取的简单步骤,将你的迁移工作从一步分为 四步:

  1. 添加新列,允许其为空

  2. 开始在所有新记录和更新中写入默认值

  3. 逐步回填缺省值

  4. 应用你的约束

  是的,只是稍微多一点工作,对现有工作的影响很微小。

  索引

  类似大部分的DDL操作,创建索引时会加锁,这就意味着所有新的数据必须等待索引创建完成后才可以写入。对于新建的或者小规模的表,等待的时间不是很明显,但是对于大规模数据库,等待的时间可能是以分钟甚至小时计添加索引的本意是为了提高查询速度,但是实际的效果却是降低了速度,这真是有点讽刺。

  Postgres中对于这个问题的答案是 CONCURRENT 创建索引。就是在后台逐步创建索引。你可以通过:CREATE INDEX CONCURRENTLY语句并发创建索引。一旦创建了索引,只要你做想做的事情,Postgres就会在查询中使用它。

  可以提供帮助的工具

  这是一个不错的实践活动,了解运行迁移时会发生什么,以及对于性能的影响。即便如此,你也不必只凭自己的力量去管理这些。至少对于Rails还有工具能帮组你掌握它。Strong migrations能够帮组你掌握很多这些昂贵的操作,如果你在使用Rails,你可以考虑看一看。

  还要其他的工具和秘诀可以有助于Postgres中的数据迁移?给我留言,我会把它们加到列表中。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1电子电路原理第七版PDF电子教材免费下载
  2. 0.00 MB  |  1490次下载  |  免费
  3. 2单片机典型实例介绍
  4. 18.19 MB  |  92次下载  |  1 积分
  5. 3S7-200PLC编程实例详细资料
  6. 1.17 MB  |  27次下载  |  1 积分
  7. 4笔记本电脑主板的元件识别和讲解说明
  8. 4.28 MB  |  18次下载  |  4 积分
  9. 5开关电源原理及各功能电路详解
  10. 0.38 MB  |  10次下载  |  免费
  11. 6基于AT89C2051/4051单片机编程器的实验
  12. 0.11 MB  |  4次下载  |  免费
  13. 7蓝牙设备在嵌入式领域的广泛应用
  14. 0.63 MB  |  3次下载  |  免费
  15. 89天练会电子电路识图
  16. 5.91 MB  |  3次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234313次下载  |  免费
  3. 2PADS 9.0 2009最新版 -下载
  4. 0.00 MB  |  66304次下载  |  免费
  5. 3protel99下载protel99软件下载(中文版)
  6. 0.00 MB  |  51209次下载  |  免费
  7. 4LabView 8.0 专业版下载 (3CD完整版)
  8. 0.00 MB  |  51043次下载  |  免费
  9. 5555集成电路应用800例(新编版)
  10. 0.00 MB  |  33562次下载  |  免费
  11. 6接口电路图大全
  12. 未知  |  30320次下载  |  免费
  13. 7Multisim 10下载Multisim 10 中文版
  14. 0.00 MB  |  28588次下载  |  免费
  15. 8开关电源设计实例指南
  16. 未知  |  21539次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935053次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537791次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234313次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233045次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191183次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183277次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138039次下载  |  免费