Mysql 事务、索引、事务的恢复和备份

索引

提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的‘create index’,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以他的价值,在于提高一个海量数据的检索速度。

常见索引分为:
主键索引(primary key)
唯一索引(unique)
普通索引(index)
全文索引(fulltext)

实例如下:

创建主键索引(三种方式):

在这里插入图片描述
主键索引的特点:

  1. 一个表中,最多有一个主键索引,当然可以使符合主键
  2. 主键索引的效率高(主键不可重复)
  3. 创建主键索引的列,它的值不能为null,且不能重复
  4. 主键索引的列基本上是int

唯一键索引:

在这里插入图片描述

唯一索引的特点:

  1. 一个表中,可以有多个唯一索引
  2. 查询效率高
  3. 如果在某一列建立唯一索引,必须保证这列不能有重复数据
  4. 如果一个唯一索引上指定not null,等价于主键索引

普通索引的创建:

在这里插入图片描述

普通索引的特点:

  1. 一个表中可以有多个普通索引,普通索引在实际开发中用的比较多
  2. 如果某列需要创建索引,但是该列有重复的值,那么我们就应该使用普通索引

全文索引的创建

当对文章字段或有大量文字的字段进行检索时,会使用到全文索引。MySQL提供全文索引机制,但是有要求,要求表的存储引擎必须是MyISAM,而且默认的全文索引支持英文,不支持中文。
在这里插入图片描述

查询索引:

在这里插入图片描述

删除索引:

方法1: 删除主键: alter table 表名 drop primary;

方法2: 其他索引的删除:alter table 表名 drop index 索引名;

方法3 : drop index 索引名 on 表名

创建索引的原则:

比较平凡作为查询条件的字段应该创建索引;

唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;

更新非常频繁的字段不适合作创建索引;

不会出现在where子句中的字段不该创建索引。

事务

事务就是一组dml语句组成,这些语句在逻辑上存在相关性,这一组dml语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据时不相同的。

开始一个事务:

在这里插入图片描述

开启事务,保存节点:

在这里插入图片描述

事务,回滚到原来的状态:

在这里插入图片描述

事务,回滚到事务的开始:

在这里插入图片描述

事务的特性:

  1. 原子性(Atomicity):
    原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  2. 一致性(Consistency):
    事务必须使数据库从一个一致性状态变到另外一个一致性状态。
  3. 隔离性(Isolation):
    事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据
    所干扰,多个并发事务之间要相互隔离。
  4. 持久性(Durability):
    持久性是指一个事务一旦被提交,它对数据库中的数据的修改就是永久性的,接下来即使数据库发生故障也
    不应该对其有任何影响。

今天的分享就到这里,谢谢!

猜你喜欢

转载自blog.csdn.net/giantleech/article/details/114260827