误区 #9: 数据库文件收缩不会影响性能

错误!

收缩数据库文件唯一不影响性能的情况是文件末尾有剩余空间的情况下,收缩文件指定了TruncateOnly选项。

收缩文件的过程非常影响性能,这个过程需要移动大量数据从而造成大量IO,这个过程会被记录到日志从而造成日志暴涨,相应的,还会占去大量的CPU资源。

不仅在收缩的过程中影响性能,并且在文件收缩之后同样影响应能,收缩产生的大量日志会被事务日志传送,镜像,复制能操作重复执行。而空间不够时,文件还需要填0初始化从而影响性能(除非你开启的不用填零初始化的选项)。

这还不算最糟,最糟的结果是文件收缩造成了大量的索引碎片,对于scan操作来说这个碎片影响性能。

不幸的是,收缩数据库的代码不是我写的(如果要是我写的话,我一开始就不会允许这种机制的)所以我们唯一能做的就是接受这种操作。

如果你想找到替代数据库文件收缩的方式,请看这篇博文:Why you should not shrink your data files,或者是一开始你就对文件做好规划:Importance of data file size management。还有这篇:TGIF Time Warp.

孩子,记住这一点:

  • 数据文件收缩是邪恶的
  • 收缩数据库更加邪恶
  • 自动收缩那简直就是十恶不赦了

简单的对收缩说NO就可以让我们永远远离其造成的烦恼。

更多相关文章

  1. 在Android中把SQLite的数据库文件存储在SD卡中【转】
  2. android直接读取数据库文件
  3. 如何查看无法导出的android数据库文件?
  4. android开启线程的误区
  5. android开启线程的误区
  6. Android(安卓)新手常见的10个误区(下)
  7. Android深入理解Context–Context使用的误区
  8. 10个常见的Android新手误区
  9. 自主可控常见“六大误区”

随机推荐

  1. 分支和循环结构的继续熟练
  2. 图解源码 | 接管SpringMVC的自动配置
  3. 肥朝匿名粉丝面经,复习资料自取!
  4. 两道JVM面试题,竟让我回忆起了中学时代!
  5. 无异常日志,就不能排查问题了???
  6. 计算时间差,你的方式或许不是最佳实践!
  7. 用最低的成本,提高你的代码稳壮性。
  8. 阿里规范不建议多表join,可这SQL要怎么写
  9. 为Android系统编译tun.ko模块
  10. Linux网络管理