命令行

命令行方式适用于DBA或是数据库运维人员使用,可以以离线的方式获取生产库上的数据库表结构、索引信息、统计信息、需要进行优化的慢查询,然后进行执行Paw Index Advisor进行索引推荐,对生产系统零侵入。

环境及安装

  • 纯java开发,支持各种操作系统(Windows + Linux+Mac OS)

  • 依赖JRE 1.8及以上

  • 无需安装,下载即用,命令如下:

  • $ java -jar paw-indexadvisor.jar -c config/config.properties

Paw IndexAdvisor 还提供了IDE插件的安装方式,请参考IDE集成部分。

配置文件

1. 配置文件(config.properties)

# The configuration file for index advisor

# Configure the query workload folder:
sqllab.queryfolder               = ./tpch/cases
sqllab.mapperfolder              = ./tpch/mappers

sqllab.querymode                 = offline
sqllab.ddlmode                   = offline
sqllab.statsmode                 = offline

# specify the server info for retrieving DDL/query/stats
sqllab.server.type = mysql
sqllab.server.host               = localhost
sqllab.server.username             = root
sqllab.server.password             = root

# the database list (comma separated)
sqllab.databaselist             = tpch

sqllab.ddlfolder                = ./tpch/ddl/
sqllab.statsfolder              = ./tpch/stats
sqllab.resultfolder          = ./tpch/out/index.sql

2. DDL语句输入配置

支持两种DDL的输入方式,联机及离线。对应的配置参数是sqllab.ddlmode。

  • 采用离线方式时,需通过sqllab.ddlfolder指定ddl存储的目录

sqllab.querymode                 = offline
sqllab.ddlfolder                = ./tpch/ddl/
  • 当采用联机的方式时,需通过sqllab.server系列参数提供数据库的连接信息。目前仅支持mysql数据库,Postgresql/Opengauss在开发计划中。

sqllab.ddlmode                   = online

sqllab.server.type                 = mysql
sqllab.server.host                 = localhost
sqllab.server.username             = root
sqllab.server.password             = root
sqllab.databaselist                = tpch

3. 查询语句的输入配置

支持两种查询语句的输入方式,通过配置参数querymode来进行配置。

  • 离线的方式,需要通过sqllab.queryfolder参数指定查询语句所在的文件夹。

sqllab.querymode                 = offline
sqllab.queryfolder               = ./tpch/cases
  • 从mybatis的mapper配置文件里提取的方式,需通过mapperfolder指定mapper文件所在的文件夹

sqllab.querymode                 = mapper
sqllab.mapperfolder              = ./tpch/mappers

4. 输出推荐索引的配置

通过sqllab.resultfolder参数指定推荐索引输出的文件名。

sqllab.resultfolder          = ./tpch/out/index.sql

5. 高级配置

sqllab.ia.dedupflag             = true   -- 是否和现有索引去重
sqllab.ia.validate              = true   -- 是否开启what-if验证推荐的索引

最后更新于