扫码关注官方订阅号
RT 拿掉外键好像是,能增加效率减少约束。
人生最曼妙的风景,竟是内心的淡定与从容!
PHP
MyISAM
logging
pdo
CURD
Innodb
Java
mongo
redis
如果需要切分数据表到不同的数据库里面时,就不能使用外键作为约束了
当你需要分库分表的时候你就知道,在所有RDBMS里提供的所谓原子性一致性完整性保证基本上都是扯淡,也就持久性你还能指望一下,但也只是“指望”一下而已,最终还是要自己动手。 当然如果你确定一定以及肯定你永远不会有这方面的需求,系统级的保证当然越多越好,不过千万记得,面对MyISAM之类的Engine时,你呵呵一下一笑而过就好。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
PHP的程序员来讲, 我个人的习惯是不使用外键。PHP代码里)。即使是对数据一致性稍有要求的电子商务网站,我也接触过只用
MyISAM表的,除了程序逻辑本身经过严格的单元测试和使用场景测试去保证数据一致性之外,我们还准备了完善的logging系统,在pdo层面对站点数据的每一次CURD做日志,针对管理员和会员的每一个操作也做日志,方便意外情况的随时排查。Innodb的其它原因还包括:缓存的设计十分合理、命中率十分高,并且经过了数据验证,综合应用流量,我们可以大胆不去考虑锁表问题;外键确实增加了数据库开销,相对于我们站点的规模来讲,增加的开销无法忽略;绝大多数PHP或Java前端人员水平良莠不齐,我们不想为数据库基础不好的同学做科普。mongo,redis之类)以应付数据库开销了。如果需要切分数据表到不同的数据库里面时,就不能使用外键作为约束了
当你需要分库分表的时候你就知道,在所有RDBMS里提供的所谓原子性一致性完整性保证基本上都是扯淡,也就持久性你还能指望一下,但也只是“指望”一下而已,最终还是要自己动手。
当然如果你确定一定以及肯定你永远不会有这方面的需求,系统级的保证当然越多越好,不过千万记得,面对MyISAM之类的Engine时,你呵呵一下一笑而过就好。