数据库
首页 > 数据库> > MySQL高级:索引、事务

MySQL高级:索引、事务

作者:互联网

索引、事务和锁

一、索引

1、索引简介

  1. 什么是索引
    索引是存储引擎用于快速找到记录的一种数据结构

  2. 为什么要有索引
    索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。

  3. 索引的优劣势
    优势:可以快速检索,减少 I/O 次数,加快检索速度
    劣势:会占用存储空间、维护和创建需要时间成本、降低数据表的修改操作(删除,添加,修改)的效率

2、MySQL 中索引的使用

  1. 创建索引
CREATE TABLE mytable(
ID INT NOT NULL, 
username VARCHAR(16) NOT NULL, 
INDEX myindex (username(16))
);

2.查看索引

SHOW INDEX FROM mytable

3、创建索引

CREATE INDEX myindex ON mytable(username(16));
或者
ALTER table mytable ADD INDEX myindex(username

4、删除索引

DROP INDEX myindex ON mytable;
或者
ALTER TABLE mytable DROP INDEX myindex;

3、索引的使用规则

  1. 索引的分类
主键索引即主索引,根据主键 pk_clolum(length)建立索引,不允许重复,不允许空值
唯一索引用来建立索引的列的值必须是唯一的,允许空值
普通索引用表中的普通列构建的索引,没有任何限制
全文索引用大文本对象的列构建的索引
组合索引用多个列组合构建的索引,这多个列中的值不允许有空值
  1. 什么情况适合建立索引什么情况不适合建立索引
适合不适合
主键自动建立唯一索引经常增删改的列不要建立索引
经常作为查询条件在 WHERE 或者 ORDER BY 语句中出现的列要建立索引有大量重复的列不建立索引
作为排序的列要建立索引表记录太少不要建立索引
查询中与其他表关联的字段,外键关系建立索引
高并发条件下倾向组合索引
用于聚合函数的列可以建立索引

提示:查看索引是否有效,可以使用 explain 命令查询

二、事务

1、事物简介

事务(Transaction):一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务

事务案例

  1. 银行转账
actnobalance
11000
2100

实现账号 1 向账号 2 转账 100 元

update t_act set balance=balance-100 where actno=1;
update t_act set balance=balance+100 where actno=2;

2、MySQL 中事务的使用方法

  1. 开启事务
start transaction;
或者
begin transaction;
  1. 提交事务
commit;
  1. 回滚事务
rollback;

3、事务有什么特征

原子性事务是最小单位,不可再分
一致性事务要求所有的 DML 语句操作的时候,必须保证同时成功或者同时失败
隔离性同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰
持久性是事务的保证,事务终结的标志(内存的数据持久到硬盘文件中)

4、事务的隔离级别有哪些

在这里插入图片描述
读未提交

读已提交

可重复读

串行化

标签:INDEX,事务,建立,myindex,mytable,索引,MySQL
来源: https://blog.csdn.net/YJMAZ/article/details/114539460