接口 | 说明 |
---|---|
InnerInterceptor |
类 | 说明 |
---|---|
BlockAttackInnerInterceptor |
攻击 SQL 阻断解析器,防止全表更新与删除
|
DataPermissionInterceptor |
数据权限处理器
|
DynamicTableNameInnerInterceptor |
动态表名
|
FakeTenantLineInnerInterceptor | 已过时
只为了过度 TenantSqlParser
|
IllegalSQLInnerInterceptor |
由于开发人员水平参差不齐,即使订了开发规范很多人也不遵守
SQL是影响系统性能最重要的因素,所以拦截掉垃圾SQL语句
拦截SQL类型的场景 1.必须使用到索引,包含left join连接字段,符合索引最左原则 必须使用索引好处, 1.1 如果因为动态SQL,bug导致update的where条件没有带上,全表更新上万条数据 1.2 如果检查到使用了索引,SQL性能基本不会太差 2.SQL尽量单表执行,有查询left join的语句,必须在注释里面允许该SQL运行,否则会被拦截,有left join的语句,如果不能拆成单表执行的SQL,请leader商量在做 https://gaoxianglong.github.io/shark SQL尽量单表执行的好处 2.1 查询条件简单、易于开理解和维护; 2.2 扩展性极强;(可为分库分表做准备) 2.3 缓存利用率高; 2.在字段上使用函数 3.where条件为空 4.where条件使用了 ! |
OptimisticLockerInnerInterceptor |
Optimistic Lock Light version
Intercept on
Executor .update;
Support version types: int/Integer, long/Long, java.util.Date, java.sql.Timestamp
For extra types, please define a subclass and override getUpdatedVersionVal () method. |
PaginationInnerInterceptor |
分页拦截器
默认对 left join 进行优化,虽然能优化count,但是加上分页的话如果1对多本身结果条数就是不正确的
|
ShardingTableInnerInterceptor |
分表插件
|
TenantLineInnerInterceptor |