1. 索引

1.1 概念


索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现



1.2 使用

查看索引


show index from 表名;



创建索引



create index 索引名 on 表名( 字段名);



删除索引



drop index 索引名 on 表名;



1.3 作用


1)数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。



2)索引所起的作用类似书籍目录,可用于快速定位、检索数据。



3)索引对于提高数据库的性能有很大的帮助



索引是如何提高查找效率的(索引背后的数据结构是什么样子的)



B+ 树(N叉搜索树)


以后会单独写一篇讲 B+ 树



1.4 使用场景



要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点:




  · 数据量较大,且经常对这些列进行条件查询。



  · 该数据库表的插入操作,及对这些列的修改操作频率较低。



  · 索引会占用额外的磁盘空间。




满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。




反之,如果非条件查询列,或经常做插入、修改操作,或磁盘空间不足时,不考虑创建索引。




在一个表里建立的索引越多,占用的存储空间也越多,再增删改或者生成执行计划时性能也就越差



1.5 常见面试题

mysql的date类型大于不走索引 mysql 大于会走索引吗_数据

 



2.事务

2.1 概念


事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。


在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务


 



2.2 索引的特性

1)原子性: 事务的根本所在(事务存在的意义),能够把多个 SQL 打包成一个整体,要么都执行,要么不执行(执行出错会自动回滚)

2)一致性: 事务执行前后,数据处在 “一致” 的状态(数据可以对上)

3)持久性: 事务进行的改动,都是写到硬盘里,不会随着程序重启/主机重启而丢失

4)隔离性: 多个事务,并发执行的时候,事务之间能够保持"隔离",不互相干扰

      MySQL中的隔离级别:

       1.read uncommitted   允许读未提交的数据,并发程度最高,隔离性最低,可能存在 脏读/不可重复读/幻读 问题

       2.read committed   只能读提交之后的数据. 相当于 写加锁.并发程度降低, 隔离性提高,解决了脏读,可能存在 不可重复读/幻读 问题    

       3.repeatable read(默认)   相当于读和写都加锁了.并发程度再降低,隔离性再提高,解决了脏读/不可重复读,可能存在 幻读 问题    

       4.serializable   严格执行串行化,并发程度最低,隔离性最高,解决了脏读/不可重复读/幻读问题,效率最低

2.3 使用

2.4 常见面试题

mysql的date类型大于不走索引 mysql 大于会走索引吗_mysql的date类型大于不走索引_02