刘邝杰

导航

MYSQL引擎,事务,索引

什么是储存引擎?

又叫表的储存方式。常用的分为三种 myisam,innodb,memory

myisam会将一张表分为字段,内容,索引三个文件来表示。这种储存方式是可以被压缩的,并且节约内存。但是这种储存方式不支持事务。

表创建的起初,默认的储存引擎为innodb,这种储存方式非常的安全因为数据库崩溃后可以自动恢复,而且支持事务,但是这种储存方式效率不是很高,不能很好的节约空间

memory内存储存,这种储存方式效率非常快,因为数据跟索引都存在内存中。但是数据断电就会消失。(内存可以直接直接访问,不用跟硬盘进行交互)

 

 什么是事务?(重点)

事务其实就是一个完整的业务逻辑。拿转账来说没如果a给b转账100.这就是一个完整的业务逻辑

 

 

 什么是索引?

mysql数据库的索引是添加在字段上面的,作用是为了提高表的查找效率,类似于一本书的目录、

 

索引的实现原理类似于java的二叉树。

(注意)一张表的主键默认会添加索引,或者一张表的字段如果有unique约束的话也会自动添加索引。另外

在任何的数据库当中,任何一张表的

任何一条记录在硬盘储存上都有一个硬盘的物理储存编号

 

如果一张表的主键id为

  id       物理储存编号

1      0*1111

3  0*222 

2  0*333

5   0*444

4     0*555

 

在mysql中,索引事一个单独的对象,不同的储存引擎以不同的形式存在。但是,无论索引储存在哪里,索引在mysql中都是以一个树

的形式存在的

它会转换为类似于二叉树的样子就是1作为顶部,其他的比1小的排在左边,比1大的排在右边。在储存的同时,对应的id的物理储存编号

也会储存进去

 

 如果想查找id为5的主键时

select * from 表名 where id字段=5;

mysql发现id字段上面有索引对象的时候,会通过索引对象快速定位为id为5的位置

定位成功后得到物理储存编号,立刻转换sql语句为

select * from 表名 where 物理储存编号=0*444

然后通过硬盘的储存编号直接定位实现查找

总结  

当你给字段添加索引的时候,那么该字段会变成一棵二叉树的形式,目的是为了缩小扫描范围

然后通过id找到物理储存编号后直接定位

如果想给上面的一张表jon字段创建索引的sql语句为

create index emp_job_index  on emp(job);即可

create index 表名_添加索引的表字段_index on 表名(添加索引的表字段);

 删除索引的语法为

drop index emp_job_index on emp;

drop index 表名_删除索引的表字段_index on 表名;

 

索引失效?

模糊查询在以%号开始的时候索引会失效。

 

posted on 2021-07-17 19:00  刘邝杰  阅读(33)  评论(0编辑  收藏  举报