数据库基础概念
但是会sql和ER图+背了事务隔离概念,数据库不会挂的
加个重点,主从复制读写分离概念:1个数据库用于写操作,多个数据库只用于读,这是由于写操作少,读操作多,这样能极大的减轻服务器的压力,数据库也能改为redis,这也是集群的基石
阿里数据库的核心概念是分布式集群
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据库的三大范式(考试用的
引入范式的原因是为了解决以下问题:
- 数据冗余
- 更新异常
- 插入异常
- 删除异常
意思就是按照范式设计表就不会出现上述问题
主属性就是主键
第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R是满足第一范式,即属性不可分(有主键表中无表)
第二范式:不存在非主属性对主属性的部分函数依赖
第三范式:不存在非主属性对主属性的传递函数依赖
BCNF: 非主属性对主属性都是完全函数依赖
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
主键外键是为了维护关系完整性(考试用的
主键唯一且非空 为了维护实体完整性
外键要么为空要么对应另一个表主键 参照完整性
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下为面试专用
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
悲观锁
当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。
乐观锁
就是很乐观,每次去拿数据的时候都认为别人不会修改。所以不会上锁,但是如果想要更新数据,则会在更新前检查在读取至更新这段时间别人有没有修改过这个数据。如果修改过,则重新读取,再次尝试更新,循环上述步骤直到更新成功(当然也允许更新失败的线程放弃操作),乐观锁适用于多读的应用类型,这样可以提高吞吐量
行锁 (读写)
表锁
排他锁(互斥?)
间隙锁
自旋锁
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据库引擎:数据库是如何存储在电脑中的(这个后续理解深了再加吧)
MyISAM(最常用的引擎,不支持事务
管理的表具有以下特征
使用三个文件表示每个表:
格式文件:存储表的结构 .frm
数据文件:存储表行的内容 .MYD
索引文件:存储表的索引 .MYI
索引都是非聚集索引,索引文件值是指向数据文件的指针
优点
可被转换为压缩文件,节省空间(因为数据都在一个文件
可以转换为只读表提高检索效率(很受web开发喜爱)
缺点
不支持事务,加锁时对整个表加锁,不支持写并发
InnoDB(默认引擎,支持事务
表的结构在.frm文件
数据在tablespace(逻辑概念)空间,无法压缩(数据和索引存在一起,底层是B+树)
优点:
支持事务,行级锁(对表中某行数据加锁)
mysql崩溃后提供自动恢复
支持外键及引用完整性,包括级联删除和更新(拥有外键约束的父子表,删除,更新父表数据,子表自动更新和删除)
(这样可以写并发)
缺点
查询速度三个里面最慢的
MEMORY(不支持事务
缺点:不支持事务,数据和索引存储在内存中,数据容易丢失
优点:快,都是内存上的操作
还没有评论,来说两句吧...