索引
【索引是一种特殊的文件,包含数据库中所有记录的引用,类似于数组引用下标,通过这个下标就能拿到数组中的数据】
【MySQL数据库插件式的设计,每种索引在不同的存储引擎中的实现都有可能不同】
【存储引擎:对 数据进行增删改查的不同方案】
explain sql语句
【经常查询的属性设置为索引】
B-树
B+树(N叉搜索树)
事务
【若干个sql操作打包为一个整体,实际执行时要么都处理要么都不处理】
【若执行的 过程中出现了突发情况,某些操作执行不下去了。MySQL可以保证突发情况恢复之后,数据没有遭受破坏】
【通过事务“回滚”—roll back操作进行数据的还原—MySQL中的binlog文件实现,记录所有表数据的修改操作】
事务的ACIA(原子性、持久性、隔离性、一致性)
原子性:事务 中最核心的操作
一个 事务中的所有操作,要么全部成功、要么全部失败,(执行失败之后用rollback回滚数据)
持久性:
一个事务执行完成之后,这个事务对数据库的所有修改都永久的(持久化、保存到磁盘上),不会丢失
一致性:
一个事务执行前后的数据都是一种合法的状态,事务永远都是从一个一致性到另一个一致性状态。
隔离性:
多个并发事务访问数据库时, 事务之间是相互隔离的,一个事务不应该被其他事务干扰,不同事务之间相互隔离
普通SQL:一个SQL中执行的操作,MySQL自身可以保证数据并发时的正确性(通过读写锁),若是事务,并发执行就会存在相应的问题
脏读
1、什么是脏读?
事务A在修改数据,事务B读到了事务A修改后的数据,事务A进行了‘回滚’,前面修改的不算数了。事务 B读到的数据就是“脏”数据
不可重复读
同一个事务在多次相同查询后得到的数据不同
【原因】在不同的查询时,其他事务的修改对本事务来说是可见的
事务的三个操作
开启事务
回滚事务
提交事务
四种隔离级别
eg.