有没什么比较好的办法将OLTP和报表查询分离?

0
环境:SQL Server 2008 R2.

最开始说使用脚本将备份文件恢复成另外的2个数据库,当一个数据库被查询的时候,另外一个数据库就被恢复,保证能查询到最新的数据,当然有一定的延迟。其中也有一个标识列来使得可以选择到最新状态的数据库。

但是老大说这样不行,每个报表查询都需要修改。

Mirror又不行,因为需要时不时就查询。

因为这个数据库的事务比较频繁,如果使用事务复制的话,那么压力也会很大,而且其中很多表都没有主键,老大说在没有主键的表上添加自增列。

我觉得这样不好,但是又不知道怎么反驳?

大家有什么比较好的将OLTP和报表查询分离的方案吗?
已邀请:
1

gogodiy - 天善智能数据库专家、Tableau爱好者 2015-10-21 回答

先分类报表,非实时的,从OLAP或者ODS库处理;
实时报表,先确定维度所需字段,然后在相关数据表中的对应字段创建合适索引,查询代码中可根据实际需要使用with(nolock)的方式。
在没有主键的表上添加自增列,需要结合实际情况来操作,最好是针对统计需要用到的字段来考虑,而不是单纯自增列处理。因为自增列往往对报表查询启不到什么实际作用。

要回复问题请先登录注册