提交 3dda683a 编写于 作者: martianzhang's avatar martianzhang

update rules' doc

上级 e08a3b05
......@@ -897,7 +897,7 @@ func init() {
Item: "RES.006",
Severity: "L4",
Summary: "永远不真的比较条件",
Content: "查询条件永远非真,这将导致查询无匹配到的结果。",
Content: "查询条件永远非真,如果该条件出现在 where 中可能导致查询无匹配到的结果。",
Case: "select * from tbl where 1 != 1;",
Func: (*Query4Audit).RuleImpossibleWhere,
},
......@@ -1335,7 +1335,7 @@ func FormatSuggest(sql string, format string, suggests ...map[string]Rule) (map[
}
default:
common.Log.Debug("unknown report-type %s", format)
common.Log.Debug("report-type: %s", format)
buf = append(buf, fmt.Sprintln("Query: ", sql))
for _, rule := range suggest {
buf = append(buf, pretty.Sprint(rule))
......
......@@ -936,7 +936,7 @@ update tbl set col = 1 and cl = 2 where col=3;
* **Item**:RES.006
* **Severity**:L4
* **Content**:查询条件永远非真,这将导致查询无匹配到的结果。
* **Content**:查询条件永远非真,如果该条件出现在 where 中可能导致查询无匹配到的结果。
* **Case**:
```sql
......
......@@ -88,7 +88,7 @@ advisor.Rule{Item:"RES.002", Severity:"L4", Summary:"未使用 ORDER BY 的 LIMI
advisor.Rule{Item:"RES.003", Severity:"L4", Summary:"UPDATE/DELETE 操作使用了 LIMIT 条件", Content:"UPDATE/DELETE 操作使用 LIMIT 条件和不添加 WHERE 条件一样危险,它可将会导致主从数据不一致或从库同步中断。", Case:"UPDATE film SET length = 120 WHERE title = 'abc' LIMIT 1;", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
advisor.Rule{Item:"RES.004", Severity:"L4", Summary:"UPDATE/DELETE 操作指定了 ORDER BY 条件", Content:"UPDATE/DELETE 操作不要指定 ORDER BY 条件。", Case:"UPDATE film SET length = 120 WHERE title = 'abc' ORDER BY title", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
advisor.Rule{Item:"RES.005", Severity:"L4", Summary:"UPDATE 语句可能存在逻辑错误,导致数据损坏", Content:"在一条 UPDATE 语句中,如果要更新多个字段,字段间不能使用 AND ,而应该用逗号分隔。", Case:"update tbl set col = 1 and cl = 2 where col=3;", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
advisor.Rule{Item:"RES.006", Severity:"L4", Summary:"永远不真的比较条件", Content:"查询条件永远非真,这将导致查询无匹配到的结果。", Case:"select * from tbl where 1 != 1;", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
advisor.Rule{Item:"RES.006", Severity:"L4", Summary:"永远不真的比较条件", Content:"查询条件永远非真,如果该条件出现在 where 中可能导致查询无匹配到的结果。", Case:"select * from tbl where 1 != 1;", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
advisor.Rule{Item:"RES.007", Severity:"L4", Summary:"永远为真的比较条件", Content:"查询条件永远为真,可能导致 WHERE 条件失效进行全表查询。", Case:"select * from tbl where 1 = 1;", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
advisor.Rule{Item:"RES.008", Severity:"L2", Summary:"不建议使用LOAD DATA/SELECT ... INTO OUTFILE", Content:"SELECT INTO OUTFILE 需要授予 FILE 权限,这通过会引入安全问题。LOAD DATA 虽然可以提高数据导入速度,但同时也可能导致从库同步延迟过大。", Case:"LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
advisor.Rule{Item:"SEC.001", Severity:"L0", Summary:"请谨慎使用TRUNCATE操作", Content:"一般来说想清空一张表最快速的做法就是使用TRUNCATE TABLE tbl_name;语句。但TRUNCATE操作也并非是毫无代价的,TRUNCATE TABLE无法返回被删除的准确行数,如果需要返回被删除的行数建议使用DELETE语法。TRUNCATE 操作还会重置 AUTO_INCREMENT,如果不想重置该值建议使用 DELETE FROM tbl_name WHERE 1;替代。TRUNCATE 操作会对数据字典添加源数据锁(MDL),当一次需要 TRUNCATE 很多表时会影响整个实例的所有请求,因此如果要 TRUNCATE 多个表建议用 DROP+CREATE 的方式以减少锁时长。", Case:"TRUNCATE TABLE tbl_name", Position:0, Func:func(*advisor.Query4Audit) advisor.Rule {...}}
......
......@@ -936,7 +936,7 @@ update tbl set col = 1 and cl = 2 where col=3;
* **Item**:RES.006
* **Severity**:L4
* **Content**:查询条件永远非真,这将导致查询无匹配到的结果。
* **Content**:查询条件永远非真,如果该条件出现在 where 中可能导致查询无匹配到的结果。
* **Case**:
```sql
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册