1.mysql事物的基本特征和事务隔离级别
四大特性:
1.原子性:事务中的所有操作要么成功,要么全部撤回到执行事务之前的状态。
2. 一致性:执行事务之前数据库是一致的,执行事务之后数据库也是一致的。
3.隔离性:事务操作的时候是独立的,互不干扰的。
4.持久性:事务一旦提交,结果就是永久的了。
隔离级别
1.读未提交
2.不可重复读
3.可重复读
4.串行话
2.mysql脏读、不可重复读、幻读
脏读:事务A读取了事务B更新的数据,然后B回滚操作
不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读取的数据结果会不一致
幻读:幻读解决了不重复读,保证了同一事务里,查询的结果都是事务开始时的状态。
3.mysql数据表类型
MyIASM、InnoDB、HEAP、MErGE、DBD
4.mysql的MyIASM和InnoDB引擎和他们的特点
MyIASM:不支持事务,表锁,读写互相堵塞、只会缓存索引
INnoDB:支持事务,行锁,读写阻塞与事务隔离级别相关,不仅缓存索引还缓存数据
5.sql的基本优化
1.查询不要使用select *;使用连接(join)
2.查询代替子查询;
3.用exists代替in;
4,尽量避免在where子句中使用or作为连接条件。等等等还有很多。。。
6.除了CRUD的关键字,还有这些MySQL的关键字
show、explain、distinct、between and、limit、order by、groud by。
7.设计索引和使用索引的注意事项
1.索引应该建在选择性高的字段上(键值唯一的记录数或者总记录调数)。
2.组合索引中字段的顺序。
3.where条件中包含两个选择性高的字段是,可以考虑分别创建索引,引擎会同事使用两个索引(在OR条件下,应该说必须分开建索引)。
4.不要重复创建批次有包含关系的索引,如index1(a,b,c)、ndex2(a,c)、ndex1(a)
5.组合索引的字段不要过多,如果超过四个字段,一般需要考虑拆分成多个单列索引或更为简单的组合索引
6.设计索引的字段的值不能是NULL,否则索引失效
8.mysql的分区类型和他们的优点
1.Range分区,基于一个给定连续分区间范围,把数据分配不同的分区
2.List分区,类似Ramge分区,区别是list分区是基于枚举出的值列表分区,Range分区是基于给定的区间范围分区
3.Hash分区,基于给定的区间个数,把数据分配到不同的分区
4.Key分区,类似Hash分区