PawIndexAdvisor是PawSQL团队为数据库应用开发人员和DBA等数据库运维人员开发的一款自动化、智能化、成本化的索引推荐工具。上一篇文章(优秀的数据库索引推荐IDEA插件)简单介绍了PawIndexAdvisor的能力。这次小编就为大家详细介绍一下指数推荐神器PawIndexAdvisor的配置项和相关注意事项。PawIndexAdvisor的配置页面如下:QueryType(查询类型):指定要分析的SQL输入的类型。目前支持两种查询语句格式,SQL文件、原生SQL文件,支持ansi标准SQL语法;详细语法和句法对应的索引推荐将在下一章(PawIndexAdvisor用户手册(二)-语法支持)中详细介绍。Mapper文件,从Mybatis的mapper配置文件中提取SQL,通过解析得到所有可能的SQL组合。通过一个智能引擎,PawIndexAdvisor可以根据其上下文推断出mapper文件中占位符的数据类型,并为其分配一个合法的常量,从而为后续的查询语句结构分析产生合法的SQL语句。Mapper文件作为输入对于应用开发者来说非常重要,因为在应用开发初期,开发者无法完全掌握前端的输入组合,无法确定可以组合的SQL服务。这个选项可以确保所有的组合都是合适的。建议使用索引以提高性能。注意:由于Mapper的配置文件可能写得不好,一些SQL组合起来的语句在实际场景中是绝对不会出现的,然后推荐无用的索引。所以建议在程序上线后,或者UAT测试阶段,通过querylog抓取真实的SQL作为输入,再次使用PawIndexAdvisor。DatabaseVendor(databasetype):指定连接的数据库类型,目前支持MySQL、PostgreSQL、Opengauss三种数据库类型。理论上可以支持其他基于MySQL/PostgreSQL客户端协议的数据库,但没有经过全面测试。数据库连接信息,数据库连接信息有两个作用:用于获取SQL对应的数据库对象,包括数据库表、列定义、表上已有的索引信息。表和列的定义用于解析输入的SQL,后面会使用已有的索引信息对推荐索引和已有索引进行排序。数据库连接信息用于对推荐索引进行what-if验证,确保在实际的SQL执行计划中可以选择推荐索引,从而提高SQL的查询性能。Databasehost/port:数据库地址和端口User:数据库用户名:Password:数据库用户密码DefaultDB:默认数据库名,链接到默认数据库名Database/schemaList:数据库列表(MySQL)或schema列表(PostgreSQL/Opengauss).Deduplicatewithexistingindex(是否使用已有索引去重):选择该选项的场景不考虑删除已有索引,因为输入的SQL刚好不能代表这个数据库上的所有SQL场景。所以只考虑加入对输入SQL有帮助的索引。如果能保证输入的SQL包含了这个数据库的所有查询,那么就可以只保留推荐的索引。在这种情况下,您可以不选择此选项,并使用新的推荐索引来替换现有索引。What-if分析验证(是否对推荐索引进行what-if验证):确保在实际SQL执行计划中可以选择推荐索引,避免推荐无效索引。注意:在生产数据库上应该避免这个选项,因为对于没有内置what-if(内置虚拟索引)的数据库(包括MySQL/Postgres),PawIndexAdvisor通过创建推荐索引并解释它来分析执行计划然后删除推荐的索引是这样做的方法。这个过程会消耗生产数据库上一定的资源,执行时间会比较长,可能会影响生产数据库上的业务运行。本文的内容已经介绍到这里。PawSQL专注于数据库性能优化。
