前几天看到一篇"SQLServer DBA 三十问",很不错,比较中肯。这些题目还是需要一定操作经验的才能答得上来,其中的很多题目都可以通过books online查到,有些题目我也非常感兴趣,因为也处理过类似的问题,所以印象深刻,现在把我的答案写出来,希望可以帮到有缘人,如果有更好的方案,当然我也很乐意学学。

题目:7. 在线系统,一个表有五千万记录,现在要你将其中的两千万条记录导入到另一台服务器的某个表中,导完后,需要将这两千万数据删 除,你预备如何处理,优缺点是什么;

我的答案: (先说明一下我的环境是sqlserver 2000,并且假设他有主键id)

)第1步:先做一个表,t_update_log,记录更新过的记录的主键id,记录修改和删除的记录,这步骤的具体作用看下面的步骤;

)第2步:导出2000万的数据到另一个库另一表,我起名为 t_2000w ,我是用dts来处理的,效率很好,如果没有大字段,2000万大概3个小时可以导完,如果有大字段,比如很大的varchar,text,ntext 等,那需要的时间久会比较长,具体时间还要看数据的大小。

)第3步:删除当前库导出的2000万,我把当前库起名为 t_5000w, 我是这样来处理的,首先建一个和源数据表相同结构的表,起名t_3000w,导入剩下的3000万条数据,然后用sp_rename 分别修改两个表,把t_5000w改成t_5000w_bak,把t_3000w改成t_5000w(即源表), 大概就是这样,很easy吧。

别急,第一步的准备工作还没用上呢,而且还有很多细节的问题。

Q1:如何保证数据的准确性,如果你在导入的同时有人对数据进行了更新怎么办?

Q2:尽量减少对用户的影响,如果在sp_rename修改表名称需要的时间比较长,而且刚好有数据需要insert怎么办?

我的解决方案:

A1:刚好用到了第1步的表t_update_log,把有更新的记录再重新导入到新表t_2000w,从此记录表中t_update_log找出被删除的id,从t_2000w中删除;

A2:修改对表t_5000w的insert操作接口,可以再建一个结构和t_5000w一样的新表,取名t_6000w,如果有自增id,把自增id的当前值设置为6000w,然后新增的数据都insert到t_6000w中,如果你的数据库操作都是通过存储过程统一操作,那很幸运,你只需要修改存储过程,不需要修改你的。net程序,你甚至可以不停止服务就可以顺利升级,在这里存储过程的优越性得到了充分体现,如果你不是通过存储过程,而是sql语句,而且调用的地方很多,那我建议,升级期间你还是暂停服务吧。

当然以上操作都是需要再测试环境下演练一遍,记录下每一部需要的时间,并且做好失败时能及时恢复到之前状态。当然升级期间还是建议暂停服务,因为大部分人可以接受暂停服务,但不能接受数据丢失。

SQLServer DBA 三十问之我答(第7题)相关推荐

  1. SQLServer DBA 三十问(加强版)

    SQLServer DBA 三十问(加强版) 原文链接:http://www.cnblogs.com/fygh/p/3288701.html 距离最初发布SQLServer DBA 三十问 已有一年多 ...

  2. SQLServer DBA 三十问

    原贴:http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 答案:https://blog.csdn.net/cjssimei527/ ...

  3. SQLServer DBA 六十问

    问题来自 SQLServer DBA 三十问 - 飞洋过海 - 博客园 SQLServer DBA 三十问(加强版) - riont - 博客园 1.  char.varchar.nvarchar之间 ...

  4. mysql业务繁忙时能建索引吗_MySQL DBA面试高频三十问

    原标题:MySQL DBA面试高频三十问 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际 ...

  5. 计算机考研复试之软件工程三十问

    /*前言:不知道学习软工的小伙伴有没有这种疑问,软工为何这么难学进去?为何这么繁琐?为何这么难背?本小白在初学软工的时候,基本就是长期走神发呆的状态,因为完全不知道软在讲啥,要考啥. 本次二刷软工,我 ...

  6. MySQL DBA面试高频三十问

    墨墨导读:本文为开发人员提供了一些MySQL相关的知识点,包括索引.事务.优化等,下面以问答形式形式呈现出来. 前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准 ...

  7. 【深度学习】深度学习三十问!一位算法工程师经历30+场CV面试后总结的常见问题合集(含答案)...

    作者丨灯会 来源丨极市平台 编辑丨极市平台 导读 作者灯会为21届中部985研究生,凭借自己整理的面经,去年在腾讯优图暑期实习,七月份将入职百度cv算法工程师.在去年灰飞烟灭的算法求职季中,经过30+ ...

  8. 深度学习三十问!一位算法工程师经历30+场CV面试后总结的常见问题合集(含答案)...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨灯会 来源丨极市平台 编辑丨极市平台 极市导读 作者灯会为21届中部985研究生,凭借自己整理的 ...

  9. 面渣逆袭:Java集合连环三十问

    大家好,我是老三.上期发布了一篇:面渣逆袭:HashMap追魂二十三问,反响很好! 围观群众纷纷表示

最新文章

  1. 关于TypeError: ‘function‘ object is not subscriptable 报错的解决方法
  2. Ubuntu Nginx uwsgi django 初试
  3. 010_mod_fastdfs.conf配置详情
  4. 微信小程序-canvas绘制文字实现自动换行
  5. 第四范式荣获2020年度信创工委会 “卓越贡献成员单位”称号
  6. GDCM:检索dicom文件中某个位置存在的Icon测试程序
  7. Razor.js,基于JavaScript的Razor实现
  8. php 创建zip,php生成zip压缩文件的实例详解
  9. Golang开发的跨平台蜜罐平台HFish v0.6.4源码
  10. 草稿 修改数据 datagroupview
  11. linux服务器安装caffe(无root权限)
  12. MySQLi学习笔记 :一 1. 数据库的基本概念 2. MySQL数据库软件 安装-- 卸载--. 配置 3. SQL
  13. python for everybody作业和测试答案_Python第九,十章练习题 (第五周作业)
  14. 区块链产品经理规范与总结
  15. excel转word_Office批量打印精灵教程--Word、PDF、Excel、PPT批量打印及批量转PDF
  16. 用O(lgn)时间求出两个已排序数组的中位数
  17. android 解析rss,在Android中解析RSS源
  18. 属于EDG的奇迹之夜
  19. Nginx无证书反向代理
  20. 5G NR OFDM链路层仿真及Matlab代码实现(1):LDPC信道编译码之5G Tollbox中相关函数使用介绍

热门文章

  1. python抓取疫情数据_python 爬取疫情数据
  2. python字符映射与文件加密
  3. Python计算机视觉中译本实例代码/数据集
  4. 2018抖音数据研究报告完整版,你喜欢的网红画像到底是怎样?
  5. Stacking:Catboost、Xgboost、LightGBM、Adaboost、RF etc
  6. 常见面试算法:回归、岭回归、局部加权回归
  7. activity调用fragment的方法_Fragment 的现在以及未来
  8. 怎么查看raid0或者raid5_海康监控磁盘阵列怎么配置?一文了解清楚
  9. Hibernate4 : 持久化你的第一个类
  10. ASM磁盘的添加与删除