跳到主要内容

2. 数据表

必须使用INNODB存储引擎

英文名: InnodbEngineRequired

规则描述: 该规则要求所有创建表的操作必须指定INNODB作为存储引擎,因为INNODB提供了事务支持、行级锁定和更好的恢复能力。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE

触发条件: 创建表时未指定INNODB为存储引擎。

可配置:

支持的数据库类型: MySQL

禁止使用分区表

英文名: PartitionedTableDisallowed

规则描述: 此规则禁止创建分区表,因为分区表增加了管理复杂性,或者在某些情况下会影响性能。

预警级别: 提示(Notice)

审查对象: CREATE TABLE

触发条件: 创建表时使用了分区功能。

可配置:

支持的数据库类型: MySQL

表只能有一个自增列

英文名: OneIdentityColumnAllowed

规则描述: 要求每个表只能有一个自增列,以避免复杂的索引管理和潜在的性能问题。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE

触发条件: 表定义了多个自增列。

可配置:

案例: 表达式可以配置为 0.8,表示MySQL InnoDB和MyISAM引擎不允许存在多个自增字段。

支持的数据库类型: 所有 (ALL)

表的列数不建议超过阈值

英文名: NumOfColumnsExceedThreshold

规则描述: 建议表的列数不要超过特定的阈值,以优化性能和简化管理。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE

触发条件: 表的列数超过了预设的阈值(如32)。

可配置:

案例: 表达式可以配置为 32,表示表的列数不应超过32个。

支持的数据库类型: 所有 (ALL)

表必须包含的列及类型

英文名: SpecificColumnsRequired

规则描述: 要求表必须包含特定的列及其数据类型,如id和时间戳列,以满足应用程序的需求。

预警级别: 警告 (Warning)

审查对象: CREATE TABLE

触发条件: 表未包含指定的列及其类型。

可配置:

案例: 表达式可以配置为 id:unsigned int,created_ts:timestamp,updated_ts:timestamp,表示表必须包含这些列及其类型。

支持的数据库类型: 所有 (ALL)

禁止使用视图

英文名: ViewDisallowed

规则描述: 禁止创建视图,因为视图增加了查询复杂性,可能影响性能。

预警级别: 警告 (Warning)

审查对象: CREATE VIEW

触发条件: 创建了视图。

可配置:

支持的数据库类型: MySQL

单表的索引个数限制

英文名: NumOfIndexesExceedThreshold

规则描述: 限制单个表的索引数量,以避免性能下降和复杂的索引维护。

预警级别: 警告 (Warning)

审查对象: CREATE INDEX, ALTER TABLE ADD INDEX

触发条件: 表的索引数量超过了预设的阈值(如5)。

可配置:

案例: 表达式可以配置为 5,表示表的索引数量不应超过5个。

支持的数据库类型: 所有 (ALL)