Sql server sqlazure。创建索引建议和性能

Sql server sqlazure。创建索引建议和性能,sql-server,azure,indexing,azure-sql-database,Sql Server,Azure,Indexing,Azure Sql Database,我在Azure SQL S3层上得到了几个创建索引建议 在讨论之前,我想知道在索引1000万条记录时的一些问题 我们能大致知道索引的进度或完成时间吗 索引是否以异步(或者我们可以说是惰性索引)的方式工作?还是它阻止了对表/数据库的查询 关于索引期间的性能下降,我们需要了解什么吗?如果是这样的话,我们能预期退化的程度吗 它的性能是否与我的创建索引命令不同 如果数据库是只读的georedundant配置的,我假设索引配置本身也是复制的。但索引工作是分开进行的吗 如果索引是在他们自己的(复制的)数据库

我在Azure SQL S3层上得到了几个创建索引建议

在讨论之前,我想知道在索引1000万条记录时的一些问题

  • 我们能大致知道索引的进度或完成时间吗
  • 索引是否以异步(或者我们可以说是惰性索引)的方式工作?还是它阻止了对表/数据库的查询
  • 关于索引期间的性能下降,我们需要了解什么吗?如果是这样的话,我们能预期退化的程度吗
  • 它的性能是否与我的
    创建索引
    命令不同
  • 如果数据库是只读的georedundant配置的,我假设索引配置本身也是复制的。但索引工作是分开进行的吗
  • 如果索引是在他们自己的(复制的)数据库上执行的,那么从主层(S3层)到副本(S1)的索引进程可能会不同。对吗
  • 我们能大致知道索引的进度或完成时间吗

    您可以使用它,但不能使用索引创建时间。您可以通过使用
    sys.dm_exec_requests

    此外,对于SQL2016(azure兼容级别130),还有一个..可以比
    exec请求更好地跟踪准确的状态

    索引是否以异步(或者我们可以说是惰性索引)的方式工作?还是它阻止了对表/数据库的查询

    创建索引有两种方法
    1.在线
    2.离线

    在线创建索引时,表不会被阻止*,因为SQL维护索引的一个单独副本,并并行更新两个索引

    使用脱机方法时,您将遇到阻塞,表也将不可用

    关于索引期间的性能下降,我们需要了解什么吗?如果是这样的话,我们能预期退化的程度吗

    您将经历额外的IO负载、内存增加……这无法准确估计

    它的执行方式是否与我的创建索引命令不同? CREATEINDEX是一个单独的语句,我不知道你在这里的意思

    如果数据库是只读的georedundant配置的,我假设索引配置本身也是复制的。但索引工作是分开进行的吗

    如果索引是在他们自己的(复制的)数据库上执行的,那么从主层(S3层)到副本(S1)的索引进程可能会不同。对吗


    索引创建被记录下来,所有的TLOG也会在辅助服务器上重播。所以..

    谢谢。关于我的第4个问题,我想知道(1)单击Azure portal中的“创建索引”按钮和(2)在我的SMS中运行sql命令之间可能存在的区别。您是否询问Azure索引建议创建选项。如果是,我建议不要遵循所有建议,这些建议对查询运行有效,它不会考虑您的数据加载场景以及您可以运行此类查询的次数。@Youngjae:两者的差异都是相同的,不过我建议您从ssms运行,原因是上面提到的监控银行以获取您的建议:)