如何实现mssql历史数据转存(因为历史数据过多,导致查询变慢)

small_well 2009-06-06 04:14:08
使用的数据库:MSSQL2005
问题:现在的数据库里的业务数据很大,想要将历史数据转存到另外一个数据库中,从而减轻服务器的压力?请问如果实现数据的转存到其它数据库中? 如何知道这些数据产生的日期(因为数据并没有记录生成日期).可不可以讲讲具体的实现方法.不好意思,本人不是特别的懂.
思路1:一共两个数据库 数据库A 始终存放一年之内的数据,每月自动转存一年之前的数据到历史数据库中
思路2.每年一個历史资料库, 每年年初新建一个历史数据库,将当前数据库中年前的数据库转存到历史数据库中,一般的历史数据最多会查前几年的,而不是所有的历史数据都会查询到

请教各位高手,有什么好的建议,谢谢

ps:上面的两个思路也是从CSDN的老帖看到的.不过,没有具体的实现方式.所以,我现在还是不太明白如何建立历史数据库.看了邹老大的帖子,说使用作业来实现操作.只是本人不是很明白(因为刚开始做这个东西,不太会).希望大家能够提供一些思路.当然,如果可以举个小小的例子的话,就更好了!

先谢谢大家了!
...全文
275 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuejie09242 2009-06-06
  • 打赏
  • 举报
回复
其实这种问题有很多解决方法的,如转移到一个新表,同一服务器上的另一数据库(考虑到效率可以不在同一物理硬盘上),不同服务器上,看具需求了。怎样都可以的。
small_well 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luckyrandom 的回复:]
增加日期字段,但要测试是否跟现有的固定程序和谐
分区:最好的方案,第一次稍麻烦点,以后轻松
数据手动转移:每次都比较麻烦
[/Quote]
如何进行分区?
可不可以讲的详细一些?

谢谢了!
small_well 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sdhdy 的回复:]
你要转移的数据里面没有日期类型的?不可能吧,这样的话如何区分是历史数据?
或者你需要的是转移数据的日期吧,那就在历史表里加一个字段,默认为当前日期:getdate(),
插入这个表的其他列的数据时,这一列数据就会自动为当前日期。
[/Quote]
谢谢,有点思路了。不过,怪我没讲清楚。
实际要求是:
如果要把6月1日~7月1日的数据备份到历史数据库中,(这个时间是可供选择的),把这些数据转移到历史数据库中。这就意味着,在运行的数据库中的表里面需要有日期字段了。

我现在的想法是:把基本上用到的表的字段里面加上一个生成日期的字段。这样的话,就可以知道需要转移的是那些时间段的数据了。

谢谢!
sdhdy 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 small_well 的帖子:]
使用的数据库:MSSQL2005
问题:现在的数据库里的业务数据很大,想要将历史数据转存到另外一个数据库中,从而减轻服务器的压力?请问如果实现数据的转存到其它数据库中? 如何知道这些数据产生的日期(因为数据并没有记录生成日期).可不可以讲讲具体的实现方法.不好意思,本人不是特别的懂.
思路1:一共两个数据库 数据库A 始终存放一年之内的数据,每月自动转存一年之前的数据到历史数据库中
思路2.每年一個历史资料库, …
[/Quote]
你要转移的数据里面没有日期类型的?不可能吧,这样的话如何区分是历史数据?
或者你需要的是转移数据的日期吧,那就在历史表里加一个字段,默认为当前日期:getdate(),
插入这个表的其他列的数据时,这一列数据就会自动为当前日期。
sdhdy 2009-06-06
  • 打赏
  • 举报
回复
--个人认为第一个思路可取:
1、只需要一个当前库和历史库即可。
2、历史数据只会备查,不会常查,即时数据量大一些的话,也不会影响对当前数据库的操作。
--小F-- 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sdhdy 的回复:]
数据库作业,楼主可以参考一下这个。就是定一个时间,比如每年的第一天上午8点,让服务器自动执行对数据库的数据操作。
http://blog.csdn.net/sdhdy/archive/2009/04/26/4126359.aspx
[/Quote]

学习
  • 打赏
  • 举报
回复
如何知道这些数据产生的日期(因为数据并没有记录生成日期).

--》》这个貌似没有办法啊。建议加一个时间字段。另外导数据的话,方法就是 insert select ,或者使用sql server的导入导出。如果频率比较高的话,那么就使用job自动来完成。如果频率比较低的话,一年一次,那么手动来进行就可以了
sdhdy 2009-06-06
  • 打赏
  • 举报
回复
数据库作业,楼主可以参考一下这个。就是定一个时间,比如每年的第一天上午8点,让服务器自动执行对数据库的数据操作。
http://blog.csdn.net/sdhdy/archive/2009/04/26/4126359.aspx
ScottYj 2009-06-06
  • 打赏
  • 举报
回复
数据分隔多少应该有界定的条件吧,没条件怎么分啊
Q315054403 2009-06-06
  • 打赏
  • 举报
回复
增加日期字段,但要测试是否跟现有的固定程序和谐
分区:最好的方案,第一次稍麻烦点,以后轻松
数据手动转移:每次都比较麻烦
ks_reny 2009-06-06
  • 打赏
  • 举报
回复
用友的人事系统是一年一个数据库的。
ai_li7758521 2009-06-06
  • 打赏
  • 举报
回复
你的数据起码要包含个创建日期..

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧