现在我有2张表,表A,表B,我在同一台服务器上面放了一个windows service(用来往表A或B里面插入数据-数据量有点大百万级甚至千万级得),还有一个站点程序(用来取表A或者B中的数据,偶尔也会忘这2个表中的其中一个插数据),问题如下:
当我的服务在运行时(定时一天跑一次),在往表A或者B中插入数据不影响我的站点程序获取数据以及偶尔的插入数据,所以这里就用了2张表,当服务运行时如果是操作表A那么我的站点程序就切换过去操作表B,当服务运行完之后,我的站点程序再切换回来操作表A,如果站点程序在操作表A时,那么服务就直接去操作表B了,也就是说他们不会同时操作同一张表,而且还要保证站点程序能在服务跑完之后拿到最新的数据,这个问题我有个处理方式但是太传统太死板了,我是通过服务监控站点程序的web.config文件来实现(只是想法,还没具体去实现,感觉不太行),大侠们有啥好办法都绣出来吧,小弟我在线等啊,项目要上线急

解决方案 »

  1.   

    定义一个参数col用来表示表。命名一个方法GetCol()返回数据库表名。用来获取当前使用的表,当你进行操作时,先运行下GetCol()获取操作表。方法有点笨。
      

  2.   

    我怎么判定 表A或者表B正在被服务操作着,或者说我又怎么判定表A或者表B被站点程序操作着
      

  3.   

    切换表其实就是借还select * from table切换这个table.你可以像取连接字符串一样取出这两个表的名字。关键是你要定位个时间。。比如每次访问的时候 判断是否正在访问。如果正在访问服务 就切换一张  访问结束就在切换。
      

  4.   

    2张表的数据肯定要保持一致的,你可以在初始化时,指定表A为数据表。当插入时,将数据表换成表B,更新A表中的数据,更新完成后,数据表重新切换到表A,并且更新B表中的数据。问题是 当你的网站被访问时,你如何让你的前台页面更换数据表。后台插入时很好控制。前台显示获取就有点困难。