SuperAPI AI 工具集

mariadb-impl-schema-design

设计与创作

查看项目

更新于 10-15 22:18

技能介绍

用途:在新建 MariaDB 模式、选择主键类型、设计多租户表、选择 ROW_FORMAT 或 CHARSET 时提供决策依据,并在采用 Frappe/ERPNext 约定时给出建表规范。

主要能力:给出主键类型的决策树(单写入场景用 BIGINT UNSIGNED AUTO_INCREMENT;需要对外标识时另加 UUID 列;分布式写入可用 ULID/UUIDv7 或 UUIDv4 存为 BINARY(16));多租户布局选择(少于 50 租户可用每租户一个 DATABASE 的模式,50 至 1000 可用行级 tenant_id 并让 tenant_id 位于每个索引最左列,超过约 1000 个库后元数据与文件句柄开销会非线性上升);ROW_FORMAT 选择(OLTP 用 DYNAMIC,归档用 COMPRESSED 并配 KEY_BLOCK_SIZE=8);字符集与排序规则选择(10.6-LTS 与 10.11-LTS 需逐表声明 utf8mb4,推荐 utf8mb4_uca1400_ai_ci 等,禁用 utf8 别名);外键动作语义(CASCADE、SET NULL、RESTRICT,SET DEFAULT 被解析但不强制)。还给出默认生产表、行级多租户表、UUIDv7/ULID 主键表、每租户一库、Frappe 表与子表、JSON 功能索引、压缩归档表等建表模式示例。

用法:在写第一条 CREATE TABLE 前阅读;资料中示例表均显式声明 ENGINE=InnoDB ROW_FORMAT=DYNAMIC DEFAULT CHARSET=utf8mb4 与排序规则。Frappe 场景需在 bench new-site 前设置 character-set-server、collation-server、innodb_default_row_format=dynamic、innodb_large_prefix=1、innodb_file_per_table=1 等服务器参数,否则 VARCHAR(255) 索引会触发 767 字节前缀限制并报错 1071。

限制:MariaDB 的 JSON 是 LONGTEXT 别名而非原生二进制,需 CHECK (JSON_VALID(col)) 加虚拟列函数索引才能索引。外键要求 InnoDB 且不能用于分区表。分区表、迁移与引擎对比等由其他相关技能覆盖。具体版本差异与最新行为请以官方资料为准。