原⼦性(atomicity):⼀个事务必须视为⼀个不可分割的最⼩⼯作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回
滚,对于⼀个事务来说,不可能只执⾏其中的⼀部分操作,这就是事务的原⼦性。
⼀致性(consistency):数据库总数从⼀个⼀致性的状态转换到另⼀个⼀致性的状态。
隔离性(isolation):⼀个事务所做的修改在最终提交以前,对其他事务是不可见的。
持久性(durability):⼀旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。
2.事务的隔离级别,mysql默认的隔离级别是什么?
读未提交(Read uncommitted),⼀个事务可以读取另⼀个未提交事务的数据,最低级别,任何情况都⽆法保证。
读已提交(Read committed),⼀个事务要等另⼀个事务提交后才能读取数据,可避免脏读的发⽣。
可重复读(Repeatable read),就是在开始读取数据(事务开启)时,不再允许修改操作,可避免脏读、不可重复读的发⽣。
串⾏(Serializable),是最⾼的事务隔离级别,在该级别下,事务串⾏化顺序执⾏,可以避免脏读、不可重复读与幻读。但是这种事务隔
离级别效率低下,⽐较耗数据库性能,⼀般不使⽤。Mysql的默认隔离级别是Repeatable read。
脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据;
不可重复读:事务 A 多次读取同⼀数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同⼀数据
时,结果因此本事务先后两次读到的数据结果会不⼀致;
幻读:幻读解决了不重复读,保证了同⼀个事务⾥,查询的结果都是事务开始时的状态(⼀致性);
MyIASM、InnoDB、HEAP、ISAM、MERGE、DBD以及Gemeni(⼀般只知道前两者即可)
插⼊缓冲(insert buffer);⼆次写(double write);⾃适应哈希索引(ahi);预读(read ahead)
6.InnoDB引擎的⾏锁是通过加在什么上实现的?
7.Mysql中的myisam与innodb的区别,⾄少五点
InooDB⽀持事务,⽽MyISAM不⽀持事务;
InnoDB⽀持⾏级锁,⽽MyISAM⽀持表级锁;
InnoDB⽀持MVCC,⽽MyISAM不⽀持;
InnoDB⽀持外键,⽽MyISAM不⽀持;
InnoDB不⽀持全⽂索引,⽽MyISAM⽀持;
InnoDB不能通过直接拷贝表⽂件的⽅法拷贝表到另外⼀台机器, myisam ⽀持;
InnoDB表⽀持多种⾏格式, myisam 不⽀持;
InnoDB是索引组织表, myisam 是堆表;
8.myisam与innodb select count(*)哪个更快,为什么
myisam更快,因为myisam内部维护了⼀个计数器,可以直接调取。