我们有一个庞大的MS数据库,记录数以百万计。有一些java服务与DB交互以进行数据检索。该应用程序处理许多类似的,IN & JOIN子句。这会导致更高的CPU使用量&在java服务的服务调用期间,响应时间会更长。
在分析的基础上,我们确定了数据库中的4个大表,它们占用了很大的空间。决定在不同的服务器中再添加一个DB,并分配足够的内存。然后将这4个巨大的表从现有DB中移到一个单独的表中。
有人能建议这个想法对数据库优化有帮助吗?充分利用两个数据库或任何其他有用的技术吗?
发布于 2013-12-20 16:59:53
现有的服务器是否关闭了它的CPU?通常情况下,CPU不是这样的问题,但I/O容量是(网络,磁盘)。您可以在现有服务器上提供更多的I/O资源,然后在不同的磁盘上分发临时数据库、tx日志,以及可能的四个表。
将模式拆分到两个服务器对Java客户端来说是不透明的。此外,如果这些表与模式的其余部分之间存在引用完整性约束,则除非删除约束,否则无法执行。
一种选择可以是使用超限复制将完整的架构复制到另一台服务器上。您可以将这两个实例都放在负载平衡器后面。或者将所有只读进程移动到复制中。
不过,复制也有其不利的一面。例如,模式更改变得更加困难,因为并非所有类型的更改都可以复制。被卡住的tx复制是一个需要解决的难题。
在开始这些操作之前,请确保您有适当的索引。视图sys.dm_db_missing_index_details可以帮助您做到这一点。查看MSDN文章以了解如何查询视图。
https://stackoverflow.com/questions/20708169
复制相似问题