常见问题

软件依赖

  • git 项目代码管理工具
  • go 源码编译依赖
  • govendor 管理第三方包
  • docker 主要用于构建测试环境
  • mysql 测试时用来连接测试环境
  • retool: 管理测试开发工具,首次安装耗时会比较长,如:gometalinter.v2, revive, golangci-lint

提示语法错误

  • 请检查SQL语句中是否出现了不配对的引号,如 `, “, ‘

输出结果返回慢

  • 如果配置了online-dsn或test-dsn SOAR会请求这些数据库以支持更多的功能,这时评审一条SQL就会耗时变长。
  • 如果又开启了-sampling=true的话会将线上的数据导入到测试环境,数据采样也会消耗一些时间。

如何搭建测试环境

  1. # 创建测试数据库
  2. wget http://downloads.mysql.com/doc/sakila-db.tar.gz
  3. tar zxf sakila-db.tar.gz && cd sakila-db
  4. mysql -u root -p -f < sakila-schema.sql
  5. mysql -u root -p -f < sakila-data.sql
  6. # 创建测试用户
  7. CREATE USER root@'hostname' IDENTIFIED BY "1t'sB1g3rt";
  8. GRANT ALL ON *.* TO root@'hostname';

更新vitess依赖

使用govendor fetchgit clone vitess 在某些地区更新vitess可能会比较慢,导致项目编译不过,所以将vitess整个代码库加到了代码仓库。

如属更新vitess仓库可以使用如下命令。

  1. $ make vitess

生成报告并发邮件

  1. #!/bin/bash
  2. soar -query "select * from film" > ./index.html
  3. (
  4. echo To: youmail@example.com
  5. echo From: robot@example.com
  6. echo "Content-Type: text/html; "
  7. echo Subject: SQL Analyze Report
  8. echo
  9. cat ./index.html
  10. ) | sendmail -t

如何新增一条启发式建议

  1. advisor/rules.go HeuristicRules 加一个条新的规则
  2. advisor/heuristic.go 实现一个规则函数
  3. advisor/heuristic_test.go 添加相应规则函数的测试用例
  4. make heuristic
  5. make daily