我有一个 Multi-Tenancy 应用程序使用的数据库。在这个数据库中,工作负载是动态的并且不断变化。因此,我必须分配一个 DA 来持续管理数据库。但我想为此任务使用自动化服务,例如 Azure SQL 数据库顾问 - 自动索引管理(平台并不重要 - 我可以使用 MS sql server 或 oracle 或其他 RDBMS)。
我想知道这些自动索引实际上是如何工作的。我可以用这些自动索引器代替数据库管理员吗?我读到,无论何时生成查询执行计划,它都会找出所有有用的索引来执行该查询。然后它使用真正存在的索引并缓存一些关于不存在的索引的数据。如果索引数据被一次又一次地缓存,sql adviser 会将其显示为推荐索引。但我想知道我们可以转述这一点,更新和插入查询怎么样?如果我有一个记录经常更新的表,这些自动索引系统会考虑吗?
最佳答案
请注意,Index Advisor 仅在 SQL 数据库 (Azure) 中可用。
在后台 Index Advisor 是一种机器学习算法,是一种相对简单且非常有效的算法。它将分析您的工作量,看看您是否会从索引中受益。如果他认为您愿意,它会将您显示为推荐 - 如果您打开自动索引创建/删除,它实际上会创建索引。要更好地了解其工作原理,请查看 Channel 9 .请注意,在您采纳建议之前,您可以估算影响。
现在算法可能会出错,对吧?因此,一旦应用了建议,它就可以自动恢复 based on its performance .
另请注意,您可以在 Index Advisor 旁边查看 Query Performance Insights这将显示您查询的性能。因此,这可以帮助您的 DBA 诊断其他与索引无关的问题。
但请注意,Index Advisor 不会每小时为您删除和创建新索引,他需要一两天时间。因此,如果您的数据库的工作负载变化非常快,那么我不确定任何自动管理工具或 DBA 是否会对您的工作负载做出足够快的 react 。
关于database - 自动数据库索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39620057/