数据库中的锁、存储引擎和E-R模型简介
1、数据库中的锁
1)锁:指的是对数据库的控制权
2)目的:解决多个工作单元并发操作数据的正确性
3)分类:
a)锁类型
1、读锁(Read Lock)(共享锁):加锁后,可以读取,但是不能修改
2、写锁(Write Lock)(排它锁):加锁后,不可以进行读写
b)锁粒度
1、行级锁(细粒锁):锁定一行,并发效率高,控制较为复杂,消耗资源多
2、表级锁(粗粒锁):锁定整张表,并发效率低,控制简单,消耗资源少
2、存储引擎
1)什么是存储引擎:表的存储方式,包括:存储机制,索引机制,锁定方式
2)基本操作
-查看支持的存储引擎 show engines;
- 查看某个表的存储引擎 show create table *;
-建表时候指定存储引擎
create table t1 (name varchar(32))engine = innodb; -- 默认数据库引擎为innodb
-修改表的存储引擎:
alter table t1 engine= MyISAM; -- 修改t1表的默认数据库引擎为MyISAM
3)常用的存储引擎的特点
a)InnoDB
-支持数据库事务,行锁定,支持外键(FK)
-共享表空间
表名.frm:表结构和索引
表名.ibd:表记录
show global variables '%datadir%' -- 查看mysql表存储的文件目录
-适用场合
更新密集操作的表,并发效率较高
要求支持数据库事务
要求支持外键约束
要求支持auto_increment字段
b)MyISAM
-支持表级锁定、不支持事务、不支持外键,不支持行锁定,访问速度快
-独享表空间
表名.frm:表结构
表名.myd:表数据
表名.myi:表索引
-适用场合
查询操作较多
数据一致性较低(不支持事务)
没有外键约束
c)Memory(内存表):
-表结构存储在磁盘中,数据存储在内存当中
特点:访问速度快,占内存
-文件:表名.frm 存储表结构
-服务或者机器重启后,表中的数据丢失
-适用场合:
数据量小,访问速度要求极快,访问频率高
数据丢失后不会造成影响
3)E-R模型(实体关系模型)
a)实体(entity):现实中可以区分的事物称为实体
b)关系(relationship):实体之间的联系
- 一对一关系
- 一对多的关系
- 多对多的关系
c)属性:实体所具有的数据特征
d)E-R图:用图形化的方式,表达实体键的关系
矩形:表示实体
椭圆:表示属性
菱形:实体之间的关系
一对一:菱形左右各写一个1
一对多:菱形左右各写一个1,N
多对多:菱形左右分别用M,N表示