MySQL 事务基本流程,以及什么是索引

237 阅读1分钟

前言

事物:一个事务中可以包含多个DML语句,一个DDL语句或者一个DCL语句。
事务中的语句要么全部执行,要么全部不执行。

事务具有原子性,一致性,隔离性,持久性(ACID)

  • A 原子性:事务必须是一个自动工作的单元,要么全部执行,要么全部不执行。

  • C 一致性:事务把数据库从一个一致状态带入到另一个一致状态,事务结束的时候,所有的内部数据都是正确的。

  • I 隔离性:并发多个事务时,一个事务的执行不受其他事务的影响。

  • D 持久性:事务提交之后,数据是永久性的,不可再回滚,不受关机等事件的影响。 事务在如下情况终止:

  • 遇到rollback 或commit命令

  • 遇到DDL或者DCL语句.

  • 系统发生错误,崩溃或者退出。

事务处理大致流程如下:

-- mysql是自动提交事务的 
SET autocommit = 0 #关闭
SET autocommit = 1 #开启(默认)
-- 手动处理事务 
SET autocommit = 0 #关闭自动提交
START TRANSACTION #标志一个事物的开始,后面的语句都属于同一个事务

-- 各种查询语句 
SELECT ......FROM   
-- 提交 (成功)
COMMIT
-- 回滚 (失败)
ROLLBACK
-- 事务结束
SET autocommit = 1

索引

索引就是创建表时,列的内容不可重复的列就是索引。

如,CREATE INDEX 、定义主键约束或者唯一性键约束,可以间接创建索引、CREATE UNIQUE COUSTERED INDEX