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