代码之家  ›  专栏  ›  技术社区  ›  Brian

非常慢的数据库服务器模式

  •  1
  • Brian  · 技术社区  · 17 年前

    我无法更改db服务器,因为web应用程序中输入的所有数据最终都需要到达那里(出于备份原因)。

    该数据库仅从webapp使用,我希望找到一种缓存机制,其中所有数据都缓存在web服务器上,更新以异步方式发送到db。

    对我来说,在读取的db数据和插入的数据之间立即建立对应关系并不重要:想想StackOverflow上的阅读问题和插入后不必立即显示的新插入问题)。

    我想构建一个介于WCF之间的服务,该服务将在慢速db服务器和本地服务器(可能是Sqllite或SqlExpress服务器)之间交换和同步数据。

    7 回复  |  直到 17 年前
        1
  •  3
  •   fsniper    17 年前

    你的瓶颈是什么?读取数据还是写入数据?

    如果您担心读取数据,请使用基于内存的数据缓存机制,如 memcached 将是一个性能助推器,因为大多数主流和最大的网站都在这样做。 Scaling facebook hi5 with memcached 这是一本好书。此外,实现应用程序端页面缓存将删除应用程序发出的查询,从而触发更低的数据库负载和更好的响应时间。但这不会对数据库服务器的负载产生太大的影响,因为您的数据库还有一些其他大量用户。

    如果写入数据是瓶颈,那么实现某种asyncronyous中间件存储服务似乎是必要的。如果前端服务器上有快速和慢速响应定时数据存储,那么使用诸如mysql或postgresql之类的轻量级数据库存储(可能不是那么轻量级;)并将真实数据库用作站点的从属复制服务器是一个不错的选择。

        2
  •  1
  •   PEZ    17 年前

    我会做你已经在考虑的事情。为应用程序使用另一个数据库,并且仅将当前数据库用于备份目的。

        3
  •  1
  •   Jeroen Landheer    17 年前

    这项工作出人意料地好,因为MSMQ确保了可靠的消息传递(更新不会丢失),并且数据仓库确保了本地数据库中的数据可用。

        4
  •  0
  •   Philippe Grondier    17 年前

    有许多复制技术可以为您提供适当的结果。通过在配置的“web”端安装SQL Server实例,您可以选择:

        5
  •  0
  •   balexandre    17 年前

    只需添加一个 SQL 2008 Server Express Edition 文件和尝试,只要你不通过4Gb的数据,你就可以了,当然有更多的限制,但就速度而言,为什么不尝试呢?

        6
  •  0
  •   Toby Mills    17 年前

    您还应该考虑所涉及的网络交换机。如果DB服务器正在与多个web服务器通信,那么它可能会受到网络连接速度的限制。如果它们仅通过100mb网络交换机连接,那么您可能也需要考虑升级。

        7
  •  0
  •   gbjbaanb    17 年前

    WCF服务对于这个问题来说是一个非常糟糕的工程解决方案——当您可以使用标准的SQLServer连接机制来确保数据正确传输时,为什么要自己开发呢。日志传送将按选定的间隔发送数据。

    不过,您应该调查一下运行缓慢的sql server,性能问题可能与它的负载无关,更多的是与您要求它处理的查询和索引有关。

    推荐文章