前言
上一篇我们确定了架构方向。本篇动手做两件事:安装MySQL和设计游戏数据表。这两步看似基础,但表结构设计的好坏直接决定了后续CRUD的复杂度和性能上限。
一、MySQL快速安装(三选一)
1.1 Windows:MySQL Installer(推荐新手)
1 | # 下载 MySQL Community Server 8.0 LTS |
验证安装:
1 | mysql -u root -p |
1.2 macOS:Homebrew
1 | brew install mysql |
1.3 Linux (Ubuntu/Debian)
1 | sudo apt update |
💡 统一要求:MySQL 8.0+,字符集
utf8mb4,排序规则utf8mb4_unicode_ci。
二、创建游戏数据库
1 | -- 创建数据库 |
⚠️ 生产环境中
'game_app'@'%'应改为具体IP,如'game_app'@'10.0.0.%'。
三、核心表结构设计
以一个玩家管理系统为例,设计4张核心表:
3.1 玩家账号表
1 | CREATE TABLE players ( |
3.2 背包物品表
1 | CREATE TABLE player_items ( |
3.3 登录日志表
1 | CREATE TABLE login_logs ( |
3.4 排行榜快照表
1 | CREATE TABLE leaderboard_snapshots ( |
四、表设计黄金法则
| 法则 | 说明 | 反面教材 |
|---|---|---|
| 主键用BIGINT自增 | 避免UUID做聚簇索引,写入性能差10倍 | id VARCHAR(36) PRIMARY KEY |
| 字符串给合理长度 | VARCHAR(32)而非VARCHAR(255),节省索引空间 | 所有字段都VARCHAR(255) |
| 金额用UNSIGNED整数 | 金币存分(cents),避免浮点精度问题 | gold DECIMAL(10,2) |
| 时间用DATETIME | 自动维护updated_at,方便排查问题 | 用INT存时间戳 |
| 外键+级联删除 | 保证数据一致性 | 手动DELETE多张表 |
| 索引按需创建 | 每个WHERE/JOIN字段考虑加索引 | 给每个字段都加索引 |
| JSON存灵活扩展 | extra_data存非结构化属性 | 新建几十列nullable字段 |
五、插入测试数据
1 | -- 插入测试玩家 |
六、常用管理命令速查
1 | -- 查看表结构 |
总结
好的表结构是改出来的不是想出来的。先按本篇模板建表跑通流程,上线前再用EXPLAIN逐条分析SQL、根据实际查询模式调整索引。记住三个数字:BIGINT主键、VARCHAR合理长度、UNSIGNED存金额。
下一篇我们在Unity中配置MySQL驱动,跑通第一个查询。
说些什么吧!