如何快熟查询和数据库实时同步??

时间:2021-12-16 11:34:19
情况说明:有一车辆信息表tb ,主键id结构如下
-------------------------------------------------------------------
 id  line  carno      datatime                  info    other
  1  1001  75     2011-10-14 06:24:53.000        23       n
  1  1002  33     2011-10-14 06:25:23.000        24       n
  1  1001  24     2011-10-14 06:25:58.000        23       n
  1  1003  42     2011-10-14 06:25:59.000        26       n
  1  1001  66     2011-10-14 06:26:20.000        23       n
  1  1002  81     2011-10-14 06:26:21.000        24       n
  1  1003  20     2011-10-14 06:26:22.000        23       n
  1  1001  75     2011-10-14 06:26:53.000        26       n
-------------------------------------------------------------------
问题一:
查询线路line为1001 所有车辆的最新info 和其他信息(我写了一条sql结果要25秒,太慢了!)


(其实每天的数据不超过100万条,其他的数据是历史数据!所以我想能不能这样:
再用一台查询服务器实时同步主服务器上最新的数据仅供网络实时查询用,晚上就计划任务清空数据表,这样就不会因数据量太大而增加查询时间,但是问题来了;

问题二:如何实时同步主服务器的数据到查询服务器而又不影响主服务器的性能?




请各位前辈给予帮助,先谢谢了!

9 个解决方案

#1


做 复制订阅吧。订阅服务器作为你的查询DB使用

#2


问题一:查询线路line为1001 所有车辆的最新info 和其他信息(我写了一条sql结果要25秒,太慢了!)
--> line字段是否有索引.没有则建一个: create index idx_tab_line on [表名](line)

问题二:如何实时同步主服务器的数据到查询服务器而又不影响主服务器的性能?
--> 方法很多,触发器,复制(replication),service broker..都可以.
    PS:如果问题一解决了,此问题可忽略.

#3


双击热备份,然后调用备份服务器不行吗?

#4


有点慢,建个索引看看先。
双机热备份操作

#5


双机热备份操作》 哦 学习了

#6


引用 2 楼 ap0405140 的回复:
问题一:查询线路line为1001 所有车辆的最新info 和其他信息(我写了一条sql结果要25秒,太慢了!)
--> line字段是否有索引.没有则建一个: create index idx_tab_line on [表名](line)

问题二:如何实时同步主服务器的数据到查询服务器而又不影响主服务器的性能?
--> 方法很多,触发器,复制(replication),service……


查询语句有没有什么优化的写法?比如需要用临时表什么的吗?

#7


引用 6 楼 chrisziling 的回复:
查询语句有没有什么优化的写法?比如需要用临时表什么的吗?

查询速度慢的原因很多,例如,
1.表总数据100万笔,其中line=1001有99万,那是没办法的,即使line上有索引也快不到哪的.
2.当查询时,如果有其他连线在修改line=1001的数据,此时会出现锁等待(也就是你感觉的慢).
3.检查该表的聚集索引碎片,如果太高,也会导致查询效率低下.


#8


再请教各位关于关于问题二的: 双机热备份、数据库镜像、订阅、触发器 哪种同步方式实时效果最好且最不影响主服务器的性能??

#9


算了,看来只能用发布订阅了!先结贴了!!!

#1


做 复制订阅吧。订阅服务器作为你的查询DB使用

#2


问题一:查询线路line为1001 所有车辆的最新info 和其他信息(我写了一条sql结果要25秒,太慢了!)
--> line字段是否有索引.没有则建一个: create index idx_tab_line on [表名](line)

问题二:如何实时同步主服务器的数据到查询服务器而又不影响主服务器的性能?
--> 方法很多,触发器,复制(replication),service broker..都可以.
    PS:如果问题一解决了,此问题可忽略.

#3


双击热备份,然后调用备份服务器不行吗?

#4


有点慢,建个索引看看先。
双机热备份操作

#5


双机热备份操作》 哦 学习了

#6


引用 2 楼 ap0405140 的回复:
问题一:查询线路line为1001 所有车辆的最新info 和其他信息(我写了一条sql结果要25秒,太慢了!)
--> line字段是否有索引.没有则建一个: create index idx_tab_line on [表名](line)

问题二:如何实时同步主服务器的数据到查询服务器而又不影响主服务器的性能?
--> 方法很多,触发器,复制(replication),service……


查询语句有没有什么优化的写法?比如需要用临时表什么的吗?

#7


引用 6 楼 chrisziling 的回复:
查询语句有没有什么优化的写法?比如需要用临时表什么的吗?

查询速度慢的原因很多,例如,
1.表总数据100万笔,其中line=1001有99万,那是没办法的,即使line上有索引也快不到哪的.
2.当查询时,如果有其他连线在修改line=1001的数据,此时会出现锁等待(也就是你感觉的慢).
3.检查该表的聚集索引碎片,如果太高,也会导致查询效率低下.


#8


再请教各位关于关于问题二的: 双机热备份、数据库镜像、订阅、触发器 哪种同步方式实时效果最好且最不影响主服务器的性能??

#9


算了,看来只能用发布订阅了!先结贴了!!!