赞
踩
事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务四个特性:原子性、一致性、隔离性和持续性。
原子性:事物中包括的操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其它事务干扰。
比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
持续性:也称永久性,一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
如果不隔离的话会发生脏读、不可重复读、幻读这三种情况。
脏读是读取了未提交事务的脏数据,不可重复读和幻读都是读取了另一条已提交事务的数据。
现在来看看MySQL数据库为我们提供的四种隔离级别:
① Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读的发生。
③ Read committed (读已提交):可避免脏读的发生。
④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。
排它锁:也叫写锁 X锁
共享锁:也叫读锁 S锁
一级封锁协议:修改时必须加X锁直到结束
二级封锁协议:读的时候加S锁,用完就放
三级封锁协议:读的时候加S锁,直到结束
一级锁协议:解决丢失修改
二级锁协议:解决读脏数据
三级锁协议:解决不可重复读
选择、投影、笛卡尔积、并、差
自然连接:一种特殊的等值连接,它要求两个关系进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。
优点:
通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性
可以加快数据的检索速度
可以加速表与表之间的连接
在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间
缺点:
创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加
索引需要占用物理空间,数据量越大,占用空间越大
会降低表的增删改的效率,因为每次增删改索引,都需要进行动态维护
什么时候需要创建索引?
主键自动建立唯一索引
频繁作为查询条件的字段应该创建索引
查询中排序的字段创建索引将大大提高排序的速度(索引就是排序加快速查找
查询中统计或者分组的字段;
什么时候不需要创建索引?
频繁更新的字段不适合创建索引,因为每次更新不单单是更新记录,还会更新索引,保存索引文件
where条件里用不到的字段,不创建索引;
表记录太少,不需要创建索引;
经常增删改的表;
数据重复且分布平均的字段,
普通索引、主键索引、唯一索引、全文索引、聚集索引
1、主键用于唯一标识表中某一行的属性或属性组,而索引用于快速寻找具有特定值的记录;
2、一个表只能有一个主键,但可以有多个候选索引;
3、主键列不允许空值,而索引列允许空值;
4、主键可以被其他表引用为外键,而唯一索引不能;
实体完整性:主键唯一且非空。
域完整性:是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。
参照完整性:是表间规则,定义外码。
用户定义完整性:根据应用要求定义属性上的约束条件,即属性值限制,包括:列值非空 ( not null )、列值唯一 ( unique )、检查列值是否满足条件表达式 ( check 短语)
drop:删除内容和定义,释放空间。(表结构和数据一同删除)
truncate:删除内容,释放空间,但不删除定义。(表结构还在,数据删除)
delete:删除内容,不删除定义,也不释放空间
执行的速度上,drop>truncate>delete
用户标识与鉴别、存取控制(权限控制):对用户的存取权限进行控制
审计追踪机制(日志):设置相应的日志记录,便于后期查证
定义视图:视图机制屏蔽一部分保密数据,然后在视图上进一步进行授权
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。