database - 自动数据库索引

标签 database oracle indexing azure-sql-database database-indexes

我有一个 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/

相关文章:

python - 如何在Python中从原始数据和列中查找索引?

mysql - Sphinx 索引器“无错误”错误

php - SQL命令计算百分比

database - Microsoft 数据库项目需要 Visual Studio 2010 高级版或更高版本?有没有开源免费的?

ruby-on-rails - 为什么我的 Rails 数据库迁移没有创建列?

Java JDBC 主键 Oracle 数据库

sql - Oracle-SQL-用子选择插入

oracle - 简单类型别名 - Oracle 最佳实践

testing - 谷歌数据存储模拟器

PHP - 使用登录系统保护仅限成员(member)的页面