浅谈数据库常用的数据引擎的区别以及数据库的三大范式
数据库第一范式:保证数据的原子性,即数据表中所有字段都是不可分解的原子值.
数据库第二范式:第二范式(确保表中的每列都和主键相关)
数据库第三范式:.第三范式(确保每列都和主键列直接相关,而不是间接相关);
数据库的常用数据引擎中InnoDB与MyISAM的相关问题
数据引擎 是否支持事务 是否支持外键 锁 是否保存表的具体行数
InnoDB 支持 支持 行级锁 表级锁 不保存
MyISAM 不支持 不支持 只支持表级锁 保存
InnoDB在什么情况下使用行锁?什么情况下使用表锁?
InnoDB行锁是通过给索引加锁实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表级锁!行级锁在每次获取锁和释放锁的操作需要比表级锁消耗更多的资源。
MyISAM 表级锁的特性(读时候不阻塞其他用户读,阻塞其他用户写。写时候,读写都阻塞)
MyISAM表级锁有俩种特性,表共享读锁和表独占写锁。就是说对MyIASM表进行读操作时,它不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写操作;而对MyISAM表的写操作,会阻塞其他用户对同一表的读和写操作。
InnoDB与MyISAM什么时候才适用?
大量的查用MyISAM ,因为MyISAM不支持事务,可以提供高速的储存和检索。
大量的增删改用InnoDB,因为InoDB支持事务,如果增删改出错时候还能进行回滚的操作。
三 事务的特性
事务: 事务是一个操作序列,这些操作要么全部执行,要么都不执行,它是一个不可分割的工作单位,事务是数据库维护数据一致性的单位,在每个事务结束时候,它都能保持数据一致性。
数据库事务的四大特征:
原子性 一致性 隔离性 持久性 (ACID)
原子性: 整个数据库的事务是不可分割的一单位,只有数据库中的操作全部执行成功,整个事务才算是执行成功。如果数据库的操作没有执行成功,那么本次操作必须全部撤销。
一致性:一个事务的执行,必须使数据库从一个状态变为另外一个状态,从事务的开始到事务的结束,事务的完整性约束都没有被破坏。
隔离性:一个事务的影响在该事务提交之前对其他事务是不可见的—是通过锁来实现的。
持久性:当事务提交之后,对数据库的造成的影响是永久的。