MySQL 外键和性能影响
MySQL Foreign Keys and Performance Impact
我目前正在从头设计一个新的数据库,试图预见随着规模的增加可能出现的任何问题
我正在制作登录系统
我有 tables: (InnoDB, Dynamic)
- user (新用户创建更新,仅存储 id、email、hash、pepper)
- user_profile (关于用户修改个人资料信息的更新 - 它是
ecom,太不规则了)
- user_addresses (关于用户添加地址的更新)
- user_reset (密码恢复尝试更新)
- user_attempts (更新密码尝试失败)
- user_devices (登录时更新)
目前,所有 table 都有来自“用户”的 ID 外键 table - 他们可能有也可能没有自己的 ID也取决于是否需要。 "user_profile" 也有来自 "user" 的 "email" 的外键 table
我还计划在将来添加营销 tables which foreign key from "user" table "id" ,它将做任何事情,从跟踪流量到监控点击等。
我的设置是否会以最佳方式执行?我可以提出任何改进建议以提高性能吗?即我什至需要外键吗?将不胜感激
.
期待您的问题:
为什么要拆分用户和user_profile?
我希望在登录时获得性能提升...也许不是?老实说,外键并不那么熟悉,它们似乎总是阻碍多于帮助,但我真的想从一开始就“正确”地做事
定义“比例”
网站上有 10 万用户,因为如果它达到那个规模,我很确定我可以雇用一个开发团队 lol
编辑:感谢 -1 没有任何评论,很高兴你比我更理解 MySQL
6 次更新 -- 没什么大不了的。应该能够处理数百个用户 每秒 .
如果这些表中的任何一个是“1:1”,则考虑将它们合并。 (如果他们是“1:many”,那么单独的表格是合适的。)
索引对性能很重要。 FOREIGN KEY
是两件事:索引和一致性检查。许多教科书推动使用 FK;我通常只对等效索引感到满意。
我目前正在从头设计一个新的数据库,试图预见随着规模的增加可能出现的任何问题
我正在制作登录系统
我有 tables: (InnoDB, Dynamic)
- user (新用户创建更新,仅存储 id、email、hash、pepper)
- user_profile (关于用户修改个人资料信息的更新 - 它是 ecom,太不规则了)
- user_addresses (关于用户添加地址的更新)
- user_reset (密码恢复尝试更新)
- user_attempts (更新密码尝试失败)
- user_devices (登录时更新)
目前,所有 table 都有来自“用户”的 ID 外键 table - 他们可能有也可能没有自己的 ID也取决于是否需要。 "user_profile" 也有来自 "user" 的 "email" 的外键 table
我还计划在将来添加营销 tables which foreign key from "user" table "id" ,它将做任何事情,从跟踪流量到监控点击等。
我的设置是否会以最佳方式执行?我可以提出任何改进建议以提高性能吗?即我什至需要外键吗?将不胜感激
.
期待您的问题:
为什么要拆分用户和user_profile?
我希望在登录时获得性能提升...也许不是?老实说,外键并不那么熟悉,它们似乎总是阻碍多于帮助,但我真的想从一开始就“正确”地做事
定义“比例”
网站上有 10 万用户,因为如果它达到那个规模,我很确定我可以雇用一个开发团队 lol
编辑:感谢 -1 没有任何评论,很高兴你比我更理解 MySQL
6 次更新 -- 没什么大不了的。应该能够处理数百个用户 每秒 .
如果这些表中的任何一个是“1:1”,则考虑将它们合并。 (如果他们是“1:many”,那么单独的表格是合适的。)
索引对性能很重要。 FOREIGN KEY
是两件事:索引和一致性检查。许多教科书推动使用 FK;我通常只对等效索引感到满意。