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

使用重复的SQL Server数据库进行查询

  •  2
  • Charles  · 技术社区  · 16 年前

    我有一个非常大的SQL Server 2005数据库,它接收大量插入和更新,而选择的频率较低。SELECT需要大量的索引来保持它们的正常运行,但是索引的数量似乎影响了插入和更新的效率。

    5 回复  |  直到 16 年前
        1
  •  4
  •   nopuck4you    16 年前

    您希望使用复制来设置主/子数据库拓扑。使用SQL server,您需要在两个数据库之间设置复制(最好在单独的硬件上)。应用于插入和更新的主数据库。子项将为您的所有select查询提供服务。您还需要针对数据库将要执行的工作类型优化这两个数据库配置设置。如果在子数据库上有大量select查询,则可能还需要设置视图,使查询的性能优于表上的复杂联接。

    关于复制的一些参考资料:

    http://technet.microsoft.com/en-us/library/ms151198.aspx

    只需在谷歌上搜索一下,您就会发现关于如何设置和配置的大量信息:

    http://search.aim.com/search/search?&query=sql+server+2005+replication&invocationType=tb50fftrab

        2
  •  1
  •   Remus Rusanu    16 年前

    事务复制可以做到这一点,因为与发布服务器相比,订阅服务器可以有许多传统索引。但您必须记住一个简单的事实:所有插入/更新/删除都将在报告副本(订阅服务器)上复制,而传统索引将。。。降低复制速度。实际上,可以将复制速度降低到wich无法跟上的速度,从而导致分发数据库膨胀。但这只是当你有一个恒定的高更新率。如果问题仅在峰值期间出现,则分布数据库将充当队列,吸收峰值并在非高峰时间将其消除。

        3
  •  0
  •   Quassnoi    16 年前

    通常,所有基于集合的操作(包括更新索引)都比不基于集合的操作快

    1,000 插入的速度很可能比一次插入的速度慢 记录。

        4
  •  0
  •   CraigF    16 年前

    您可以通过任务调度bcp脚本将数据复制到另一个数据库。

    您还可以尝试事务日志传送来更新只读数据库。

        5
  •  0
  •   Jay    16 年前

    创建两个数据库时,不要忘记调整填充因子。在频繁更新的数据库上,它应该是低(er),在“数据仓库”/“只读数据库”上应该是100。