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