mysql知识点

1.聚簇索引和非聚簇索引的区别

索引类型和存储类型是相关的
1.innodb存储引擎索引和数据存放在ibd文件中,myisam存储引擎存放在myd文件中
2.区分聚簇索引和非聚簇索引的区别,只要区分数据和索引是否存放在一起
3.innodb存储数据,数据和索引必须存放在一起,如果有主键就使用主键,没有就使用唯一键,没有唯一键就使用rowid,因此和数据绑定到一起的就是聚簇索引,而为了避免数据冗余,其他索引的叶子节点也存储了聚簇索引的key值,索引innodb既有聚簇索引也有非聚簇索引,myisam只有非聚簇索引

2.事务的隔离级别

MysqL的事务隔离级别,一共有4中,从低到高,依次为:
读未提交(Read uncommitted)
  如果一个事务开始进行写操作,另一个事务不允许进行写操作。但允许其他事务读取此行数据。该隔离级别可以通过“排他写锁”实现。避免了数据的更新丢失,
  但是,可能会出现“脏读”,就是我一个事务读取到了其他事务未提交的数据
  脏读:事务A开启事务,查询id=1的数据,事务b也开始事务查询id=1的数据,事务a修改这条数据,事务b读取到了事务a未提交的数据
读已提交(Read committed) 解决“脏读”
  读取数据的事务允许其他事务访问该行数据,但是如果是写事务,将会禁止其他事务访问该行。隔离级别避免了脏读,但是有可能出现不可重复读
  不可重复读:事务a先读取了数据,事务b再去修改了这条数据,并且提交,这个时候事务a再去读取数据,发现数据不一致

可重复读(Repeatable read)解决“不可重复读”
  可重复读是指在一个事务内,多次读取同一个数据,在这个事务a还没有结束的时候,另一个事务b也访问该条数据,即使这个事务b修改了这条数据,事务a两次读取到的结果也是一样的,所有叫可重复读。
  但是有可能出现“幻读”
幻读:事务a先开启事务,查询id=1的数据,发现不存在,事务b也开启事务,查询id=1的数据,发现也不存在,事务b这个时候添加了这条数据,然后进行了提交,事务a这个时候再去添加这条数据,发现添加不上也查找不到
序列化(Serializable)解决“幻读”
  提供了严格的事务隔离,事务只能一个一个进行,不能并发操作,但是对性能会有一定的影响
https://www.cnblogs.com/bkhdd/p/15262342.html

 

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...