数据库从0到0
前言
啊~ 里面内容为个人总结以及转载别人文章,若无意对您的文章造成侵权,请您留言,博主看到后会及时处理
问题一:为什么要分数据类型?
刚刚入门的时候其实很疑惑为什么数据库要分数据类型,因为第一个项目接触的表全部是varchar类型的。这里列出一下分数据类型的好处
1.效率:当数据库知道它要处理的数据类型之后,能够降低存储空间总量,并且提供访问速度,比如843928123用数字(int)来存只要4个字节,但用(varchar)字符来存就需要9个了(一个字符一字节)。
2. 数据类型背后,隐藏的是编译器或者解释器对数据处理方式的定义,通过数据类型的约束可以减少非正常数据的存入,比如date类型的列就不应该存入数字了,并且可以无障碍的通过内置函数转换为任何等价形式,比如日期类型 ‘2017-3-28 00:00:00’就可以转化为"28/3/2017" 或者"2017年3月28日 0点"
问题二:为什么现在不推荐使用外键约束(物理外键)更推荐逻辑外键
阿里规范里面是强制不得使用外键与级联,一切外键概念必须在应用层解决。
外键优点:
1.保证数据的完整性和一致性
2.级联操作方便
3.将数据完整性判断交付给数据库,减少程序的代码量
4.使用mysql workbench 生成er图方便直观看到表与表的关系
外键缺点:
1.每次进行删除、修改必须考虑外键约束,测试数据、以及开发都不方便
2.在高并发大流量事务场景中,每次修改数据都需要去另外一个表检查数据,需要获取额外的锁,很容易造成死锁。并且因为每次都要去外键所在的表检查数据,影响性能。
3.如果在数据库性能达到瓶颈的时候,做水平扩展比较困难,如果外键约束在应用程序中,发现应用服务器性能不够,可以加机器,做水平扩展
本文地址:https://blog.csdn.net/qq_21197023/article/details/107640931