SQL 2016 - 我有 2 个表,Foo & Bar - Bar 引用 Foo。我想将 Foo 变成一个内存优化表,但是当 Bar 引用这个时,我做不到。
由于依赖于 Foo,我也无法在内存中创建 Bar。
似乎我需要同时对两个表执行此操作 - 这是否可能无需从头开始重新创建两个表?
SQL 2016 - 我有 2 个表,Foo & Bar - Bar 引用 Foo。我想将 Foo 变成一个内存优化表,但是当 Bar 引用这个时,我做不到。
由于依赖于 Foo,我也无法在内存中创建 Bar。
似乎我需要同时对两个表执行此操作 - 这是否可能无需从头开始重新创建两个表?
我们目前有一个处于简单恢复模式的 100GB 数据库,它运行在 2008 R2 上。我们有一台安装了 SQL 2016 Enterprise 的新服务器,准备就绪 - 我们正在制定迁移计划,了解如何进行升级。
我们使用 SQL 2016 的数据迁移向导 ( https://www.microsoft.com/en-us/download/details.aspx?id=53595 ) 进行了一次测试,我们用它来指向我们当前的、实时的、生产数据库实例并将数据库恢复到 '16。这花了 15 分钟,考虑到其他方法(备份当前运行的数据库,复制到新服务器),这是非常快的——主要是因为我们无法通过 UNC 路径备份/恢复。
我们已经意识到我们的数据库中有很多旧的/不需要的数据,并且已经开始使用 SQL 代理执行一些删除的一些计划任务,所以当我们接近我们的“上线”日期时我们将有更少的数据驻留在数据库中,我们的想法是我们应该能够用更少的数据更快地将活动实例恢复到'16。
但是,很明显,在我们执行 DB 收缩之前,磁盘上数据库 FILE 的实际大小不会收缩。
出于以下原因,我们正在考虑缩小数据库:
我知道通过缩小数据库,数据库大小会在一段时间后再次增长,但我认为我们之前忽略了数据增长的某些方面,我们已经在这些方面设置了一些流程来减少过多的数据库写入. 我们目前有 75MB 的自动增长,每天大约发生 2-3 次。
这是个好主意吗?我们将恢复我们的数据库,升级 SQL 兼容性级别,然后运行索引重建(使用 Ola Hallengren 的索引脚本)并更新统计信息。我很好奇收缩是否会大大增加这些索引操作时间,因为它会使数据库与我所理解的完全不同。我不确定这里最好的方法是什么——也许不收缩,只在数据迁移后重建 '16 上的索引?
谢谢
环境是 SQL 2008 R2、26GB RAM、4 核 Xeon E5-2650 @ 2.6GHz。
请看下图,我们的维护计划重组了索引(不是重建)。这是每周运行一次,在一周内,这个计划从大约 5 分钟增加到 1 小时 - 1 小时 15 秒,此后一直没有改进。我们不得不禁用此计划并以另一种方式解决此问题。我查看了数据库中的数据量,发现它没有增长到足以导致此问题的程度。
我一直在与我们的托管公司联系,看看我们的环境是否有任何变化,但他们说什么都没有改变,我们的虚拟机没有任何限制/限制,IO 似乎没问题。我们也没有对底层应用程序进行任何更改。
据我所知,本周内其他事情也开始失败 - 一些运行良好的查询开始超时。对于可能导致这种情况的原因,我有点不知所措,并且不确定如何追溯发现。谁能指出我从哪里开始发现这里可能出了什么问题的方向?