数据库从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.如果在数据库性能达到瓶颈的时候,做水平扩展比较困难,如果外键约束在应用程序中,发现应用服务器性能不够,可以加机器,做水平扩展

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值