MySQL————事务和索引
1.事务
概述
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或者撤销操作请求,即这些操作要么同时成功,要么同时失败。
操作
(1)开启事务
start transaction; /begin;
(2)提交事务
commit;
(3)回滚事务
rollback;
在开启事务后只要不执行commit提交事务,在开启事务后执行的DML语句的结果在其他窗口中就看不到,只能在本窗口通过查询看到,即每个窗口的事务是相互隔离的,
我们需要做的就是在执行需要的操作前开启事务,如果全部执行成功就commit提交,若有失败的,就rollback回滚。
四大特性
- 原子性(Atomicity):事务是不可分割的最小单元,要么全部成功,要么全部失败。
- 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
- 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
- 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
> 事务的四大特性简称为:ACID
2.索引
概述
索引(index):是帮助数据库高效获取数据的数据结构 。简单来讲,就是使用索引可以提高查询的效率。
MySQL 数据库中默认的索引结构是b+树。
优点:
(1) 提高数据查询的效率,降低数据库的IO成本。
(2) 通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗。
缺点:
(1)索引会占用存储空间。
(2)索引大大提高了查询效率,同时却也降低了insert、update、delete的效率。
操作
(1)创建索引:
create index 索引名(一般命名是idx_表_字段)on 表名(字段名.....);
(注:在创建表时,系统会自动创建主键索引(主键约束)和唯一索引(唯一约束),同时主键索引是性能最高的索引)
示例:
(2)查看某表的所有索引
show index from 表名;
示例:
(3)删除索引
drop index 索引名 on 表名;
示例: