有没什么比较好的办法将OLTP和报表查询分离?
0
环境:SQL Server 2008 R2.
最开始说使用脚本将备份文件恢复成另外的2个数据库,当一个数据库被查询的时候,另外一个数据库就被恢复,保证能查询到最新的数据,当然有一定的延迟。其中也有一个标识列来使得可以选择到最新状态的数据库。
但是老大说这样不行,每个报表查询都需要修改。
Mirror又不行,因为需要时不时就查询。
因为这个数据库的事务比较频繁,如果使用事务复制的话,那么压力也会很大,而且其中很多表都没有主键,老大说在没有主键的表上添加自增列。
我觉得这样不好,但是又不知道怎么反驳?
大家有什么比较好的将OLTP和报表查询分离的方案吗?
最开始说使用脚本将备份文件恢复成另外的2个数据库,当一个数据库被查询的时候,另外一个数据库就被恢复,保证能查询到最新的数据,当然有一定的延迟。其中也有一个标识列来使得可以选择到最新状态的数据库。
但是老大说这样不行,每个报表查询都需要修改。
Mirror又不行,因为需要时不时就查询。
因为这个数据库的事务比较频繁,如果使用事务复制的话,那么压力也会很大,而且其中很多表都没有主键,老大说在没有主键的表上添加自增列。
我觉得这样不好,但是又不知道怎么反驳?
大家有什么比较好的将OLTP和报表查询分离的方案吗?
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
1 个回复
gogodiy - 天善智能数据库专家、Tableau爱好者 2015-10-21 回答
赞同来自: houyichong
实时报表,先确定维度所需字段,然后在相关数据表中的对应字段创建合适索引,查询代码中可根据实际需要使用with(nolock)的方式。
在没有主键的表上添加自增列,需要结合实际情况来操作,最好是针对统计需要用到的字段来考虑,而不是单纯自增列处理。因为自增列往往对报表查询启不到什么实际作用。