目录 / mariadb-impl-schema-design
mariadb-impl-schema-design
在设计新的 MariaDB 数据库模式时,请参考以下最佳实践: - **主键类型选择**:优先使用 `BIGINT AUTO_INCREMENT`,避免在 InnoDB 中使用 UUID 字符串作为主键(会导致插入碎片化)。若需分布式唯一标识,可考虑 ULID 或 UUIDv7。 - **多租户架构**:根据业务需求选择“每租户独立 schema”或“行级租户 ID(row-tenant-id)”模式。注意前者难以扩展配额管理,后者更灵活但需确保查询性能。 - **字符集与排序规则**:默认使用 `utf8mb4` 字符集及 `utf8mb4_uca1400` 排序规则(MariaDB 10.6+),避免使用仅支持 3 字节的 `utf8`(无法存储 emoji 等 4 字节字符)。 - **行格式设置**:始终将 `ROW_FORMAT` 设为 `DYNAMIC`(默认值),以支持 `utf8mb4` 索引并启用 `innodb_large_prefix`,防止因索引过长报错(如错误 1071)。 - **外键约束与生成列**:合理使用外键保证数据完整性;利用虚拟列(generated/virtual column)优化查询逻辑。 - **Frappe/ERPNext 命名规范**:表名采用 `tab<DoctypeName>` 格式;包含 `parent`、`parentfield`、`parenttype`、`idx` 等标准字段以支持文档结构。 - **其他注意事项**:避免 `latin1` 字符集锁定;JSON 字段建议使用 `LONGTEXT` 并配合 `CHECK` 约束;`CHAR(36)` 存储 UUID 效率较低,推荐二进制格式或自增 BIGINT。 关键词涵盖:数据库模式设计、主键选型、BIGINT AUTO_INCREMENT、UUID、ULID、UUIDv7、多租户、每租户独立 schema、行级租户 ID、ROW_FORMAT、DYNAMIC、COMPRESSED、utf8mb4、utf8mb4_uca1400、外键、生成列、虚拟列、tabDoctypeName、Frappe、ERPNext、parent/parentfield、large_prefix、innodb_large_prefix、MariaDB 多租户建模、索引过长问题、1071 错误、emoji 插入失败、latin1 锁定、CHAR(36) UUID、JSON LONGTEXT、数据库模式设计入门等场景。
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。
存档时间线
| 版本 | 存档时间 | 内容哈希 | 内容 |
|---|---|---|---|
| v1 | 2026-11-14 02:54 | f5f5ef72 | 可取 |
版本索引永久保留;内容副本只保留最新 1 份,更早版本仅留索引与哈希(存档时间线的证据链不会因此断裂)。
提交举报 / 纠错
侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。