资料介绍
随着数据库的增长与扩展,你需要对一些操作给予更多的关注。你可能没有完全意识到,在开发环境中执行应用程序时,执行某些操作的成本,与在生产环境中大相径庭。在某一时刻,我们中的大多数人都犯了错,在5分钟时开始运行一些迁移,过15分钟仍然在运行,突然间生产流量受到了影响。
有两种操作发生的很频繁,每种操作都有一些简单的方法可以减少停机时间。让我们看看每一个操作,它们是如何工作的,以及如何以更安全的方式来处理它们。
添加新列
在Postgres中添加一个新列实际上代价是很低的。当你这样做的时候,它会更新对于已有列时刻的跟踪,它几乎是瞬时的。当对某个列有一些约束时,这一部分就会变得很昂贵。一个约束可以是一个主键或者外键,或者是一些唯一性约束。 Postgres不得不扫描表中的所有记录以确保没有违反这些约束。添加诸如“非空”等一些约束时,可能会有一些违反,但这不是最常见的原因。
造成添加新列迟缓最常见的原因是大部分的框架中为新列设置缺省值太过简单。对于所有的新记录这是一回事,但是对于已有的表来说,这意味着数据库不得不要读取所有的记录并且向这些记录中重写新的缺省值。对于只有几百条记录的表来说,这还不算太糟,但是对于上千万条记录的表来说,这时间就无法容忍了 。
简而言之,在添加新列时,如果将其设为非空或者在创建是设置一个缺省值都会给你带来麻烦。解决之道是不要这样做。但是,如果你需要一个缺省值或者不想字段为空时该怎么办。这有一些你可以采取的简单步骤,将你的迁移工作从一步分为 四步:
1. 添加新列,允许其为空
2. 开始在所有新记录和更新中写入默认值
3. 逐步回填缺省值
4. 应用你的约束
是的,只是稍微多一点工作,对现有工作的影响很微小。
类似大部分的DDL操作,创建索引时会加锁,这就意味着所有新的数据必须等待索引创建完成后才可以写入。对于新建的或者小规模的表,等待的时间不是很明显,但是对于大规模数据库,等待的时间可能是以分钟甚至小时计添加索引的本意是为了提高查询速度,但是实际的效果却是降低了速度,这真是有点讽刺。
Postgres中对于这个问题的答案是 CONCURRENT 创建索引。就是在后台逐步创建索引。你可以通过:CREATE INDEX CONCURRENTLY语句并发创建索引。一旦创建了索引,只要你做想做的事情,Postgres就会在查询中使用它。
可以提供帮助的工具
这是一个不错的实践活动,了解运行迁移时会发生什么,以及对于性能的影响。即便如此,你也不必只凭自己的力量去管理这些。至少对于Rails还有工具能帮组你掌握它。Strong migrations能够帮组你掌握很多这些昂贵的操作,如果你在使用Rails,你可以考虑看一看。
还要其他的工具和秘诀可以有助于Postgres中的数据迁移?给我留言,我会把它们加到列表中。
- 面向NoSQL数据库的JSON文档异常检测模型 20次下载
- 创建新的数据库和更改SQL Server CE数据库中的数据操作教程免费下载 5次下载
- 如何使用Labwindow CVI软件平台进行Mysql数据库开发 22次下载
- 两张表之间进行数据库查询时聚合函数用法的详细实例说明
- 数据库教程之如何进行数据更新和视图的详细资料说明 2次下载
- 数据库教程之如何进行数据查询的详细资料说明 8次下载
- 数据库教程之如何进行数据库保护 12次下载
- 数据库系统概论之如何进行数据库编程的资料概述 13次下载
- 数据库学习入门资料之如何进行数据库设计 14次下载
- 数据库教程之如何进行数据库设计 21次下载
- 如何进行数据库设计?数据库设计介绍和需求分析及结构设计资料概述 0次下载
- 数据库学习入门之如何进行数据库设计详细分析概述资料免费下载 14次下载
- 海量数据库迁移与升级_楼宏良 0次下载
- 基于MPI的并行数据库的研究与实现
- 组态王环境下数据库访问技术及其应用
- 如何使用原生ClickHouse函数和表引擎在两个数据库之间迁移数据 611次阅读
- OpenHarmony关系型数据库概述 880次阅读
- 什么是数据库 1190次阅读
- Python-mysql数据库基础 614次阅读
- 常见的数据库管理 1916次阅读
- 用docker启动 postgres 数据库 2467次阅读
- 云数据库和自建数据库的区别及应用 4412次阅读
- 分析探讨微服务迁移如何影响数据库管理和分解数据库的步骤 2051次阅读
- 一文看懂数据库原理与应用 11.7w次阅读
- 数据库引擎是什么 1.1w次阅读
- 冷备份的优缺点_数据库冷备份教程详解 3049次阅读
- 什么是数据库技术_数据库技术的基础知识 1.3w次阅读
- 浅谈数据库技术的应用与发展 1.1w次阅读
- 目前流行的数据库_构建数据库系统的流程 7076次阅读
- cassandra数据库迁移与扩容 5558次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多