数据库范式、事务、锁学习
2017-08-13 15:17
302 查看
数据库三大范式:
1、第一范式:保证每列的原子性,不能再拆分,比如联系方式,能拆成用户名和手机,就不要合在一起;
2、第二范式:保证每列都和主键关联;
3、第三范式:保证每列都和主键直接相关,而不是间接相关,这个涉及到拆分字段到其他表,主表只显示其他表主键信息。
--------------------------
数据库事务:
1、原子性:要么都执行,要么都不执行;
2、一致性:事务开始和结束后,数据保持一致性的状态。一致性包含强一致性、弱一致性、最终一致性;
3、隔离性:分为 读未提交(可能出现脏读、不可重复读、幻读),读已提交(可能出现不可重复读、幻读),可重复读(可能出现幻读),串行读。脏读是读到别的事务未提交的事务;不可重复读是一个事务内读2次,数据不一样,可能被另一个事务更新了;幻读是读2次,返回的记录数不一样了,可能被新增或删除了记录。Innodb默认是 可重复读级别。
4、持久性:事务提交后,对数据库造成的影响是永久的。
--------------------------
Mysql中的锁:
1)MyIsam支持表级锁。
表级锁又分为共享读锁和独占写锁。
1、共享读,其他事务还可以读;
2、独占写锁,其他事务读也不行,整个表锁了就为了写。
2)Innodb支持表级锁和行级锁。行级锁分为共享锁和排他锁。
1、共享锁允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。( Select * from table_name where ......lock in share mode)。
2、排他锁允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。(select * from table_name where.....for update) 。为了允许行锁和表锁共存,实现多粒度锁机制;同时还有两种内部使用的意向锁(都是表锁),分别为意向共享锁和意向排他锁。
3)对比表级锁和行级锁
表级锁加锁快、开销小,但是锁定粒度大,影响并发
行级锁加锁慢、开销大、但是锁定粒度小,并发高
--------------------------
Jdbc的事务依赖数据库的事务支持,通过conn.setAutoCommit(false),conn.setTransactionIsolation(...)来设置隔离级别
1、第一范式:保证每列的原子性,不能再拆分,比如联系方式,能拆成用户名和手机,就不要合在一起;
2、第二范式:保证每列都和主键关联;
3、第三范式:保证每列都和主键直接相关,而不是间接相关,这个涉及到拆分字段到其他表,主表只显示其他表主键信息。
--------------------------
数据库事务:
1、原子性:要么都执行,要么都不执行;
2、一致性:事务开始和结束后,数据保持一致性的状态。一致性包含强一致性、弱一致性、最终一致性;
3、隔离性:分为 读未提交(可能出现脏读、不可重复读、幻读),读已提交(可能出现不可重复读、幻读),可重复读(可能出现幻读),串行读。脏读是读到别的事务未提交的事务;不可重复读是一个事务内读2次,数据不一样,可能被另一个事务更新了;幻读是读2次,返回的记录数不一样了,可能被新增或删除了记录。Innodb默认是 可重复读级别。
4、持久性:事务提交后,对数据库造成的影响是永久的。
--------------------------
Mysql中的锁:
1)MyIsam支持表级锁。
表级锁又分为共享读锁和独占写锁。
1、共享读,其他事务还可以读;
2、独占写锁,其他事务读也不行,整个表锁了就为了写。
2)Innodb支持表级锁和行级锁。行级锁分为共享锁和排他锁。
1、共享锁允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。( Select * from table_name where ......lock in share mode)。
2、排他锁允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。(select * from table_name where.....for update) 。为了允许行锁和表锁共存,实现多粒度锁机制;同时还有两种内部使用的意向锁(都是表锁),分别为意向共享锁和意向排他锁。
3)对比表级锁和行级锁
表级锁加锁快、开销小,但是锁定粒度大,影响并发
行级锁加锁慢、开销大、但是锁定粒度小,并发高
--------------------------
Jdbc的事务依赖数据库的事务支持,通过conn.setAutoCommit(false),conn.setTransactionIsolation(...)来设置隔离级别
相关文章推荐
- Oracle学习----数据库事务
- 数据库学习-事务
- 【学习】数据库事务
- 学习笔记01-JTA和数据库事务
- 数据库学习之范式理解
- mysql dba系统学习(22)数据库事务详解
- 2014-07-14 Java Web的学习(11)-----数据库分页&事务简单理解
- 数据库-事务和关系数据库范式
- java_web学习第十天(JDBC数据库驱动----分页、事务)
- 【学习】数据库三范式
- [学习笔记]数据库设计三大范式与BCNF,学习笔记
- 数据库事务学习笔记
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
- Hibernate学习(9)数据库事务
- 数据库设计三大范式及事务
- 数据库事务的学习笔记
- 个人学习笔记——数据库:范式
- 数据库学习2-范式
- 数据库三大范式的学习
- 数据库—范式和事务