欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库从0到0

程序员文章站 2022-03-31 22:00:50
数据库前言问题一:为什么要分数据类型?前言写个博客来记录我的一生问题一:为什么要分数据类型?刚刚入门的时候其实很疑惑为什么数据库要分数据类型,因为第一个项目接触的表全部是varchar类型的。这里列出一下分数据类型的好处1.效率:当数据库知道它要处理的数据类型之后,能够降低存储空间总量,并且提供访问速度,比如843928123用数字来存只要4个字节,但用字符来存就需要9个了。2. 数据类型背后,隐藏的是编译器或者解释器对数据处理方式的定义......

前言

啊~ 里面内容为个人总结以及转载别人文章,若无意对您的文章造成侵权,请您留言,博主看到后会及时处理

问题一:为什么要分数据类型?

刚刚入门的时候其实很疑惑为什么数据库要分数据类型,因为第一个项目接触的表全部是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

相关标签: 数据库