数据库--索引、事务总结

一、索引
(1)什么是索引
索引是一种特殊的文件,它包含着对数据表里所有记录的引用指针,根据这个指针我们就可以找到这个指针所对应的记录。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。通俗来讲,索引就相当于一本书的目录,根据这个目录中所写的页码我们就能更快的找到我们需要的内容。
(2)索引要解决什么问题
数据库中的数据很多,比如说当我们在一个表中要查找一条记录的时候,就必须从头扫描这个表,看哪条记录是我们想要找的,这样查找就很慢。那么索引就是为了***加快查找的效率***。
(3)索引的底层数据结构
a)为什么不使用哈希表:
哈希表的查找过程:哈希表查找时,是把key代入哈希函数,通过哈希函数计算对应的下标,再根据下标找到对应的链表,再去遍历key是否相等。
哈希表只能处理相等的情况。
比如:select * from student where score=90.5
但是不能处理 select * from student where score>90.5 and score <95.5这样的情况
b)为什么不用二叉搜索树
二叉树的那个节点最多有两个分支,当有大量数据时,用二叉搜索树存储时,这棵树的高度就比较高,查找效率也不高。
c)什么是B树(也称作B-树),它的优势是什么
B树
B树是个有序的N叉树,它的每个节点可以存储多个数据,因此在存储大量数据的时候,树的高度就大大减小了。从这棵树的结构来看,一个节点的出度=该节点可以存储的数据数目+1。用专业一点的语言描述就是一个内结点x若含有n[x]个关键字,那么x将含有n[x]+1个子女。
d)什么是B+树,它的优势是什么
在B+树里面,非叶子节点不再存储数据,仅仅存在索引,而叶子节点用来存储具体的数据,并且最底层的数据之间从左到右是按照从小到大的顺序分布,并且是一个链表的结构。
B+树
从这棵树的结构来看,一个节点能存多少数据,那么它就有多少个子女。
索引加快了查询效率,减慢了插入、删除、修改效率(需要同步修改索引),也会占用格外的空间。
(4)索引的应用场景
索引适用在查找操作频繁,但插入、删除、修改操作都不频繁的场景。
(5)使用索引(举例)
a)在创建主码(Primary key)、唯一约束(unique)、外键(foreign key)时会自动创建索引;
b)查看索引:show index from 表名;
c)创建普通索引:create index from 索引名 on (表名)列名;
d)删除索引:drop index 索引名 on 表名
二、事务
(1)什么是事务
将一组操作封装起来就是事务,称为一个共同的执行单元。
(2)事务的基本特性
a)原子性:事务中的若干操作,要么全部成功,要么全部不执行(其实这里并不是没有执行,而是说在执行的过程当中某个步骤出错,就把前面已经执行完毕的步骤回滚(roll back)。
b)一致性:执行事务前后,数据始终处于合法的状态。
c)持久性:事务一旦执行完成,此时对于数据的修改就是持久生效的,修改结果写入了磁盘中。
d)隔离性:(这部分内容涉及到并发的内容,等后面再进行补充)
(3)事务的隔离级别以及不同隔离级别中产生的问题
(3)使用事务
start transaction; 开启事务
SQL语句
roll back;//commit; 事务结束,开始执行

猜你喜欢

转载自blog.csdn.net/Subuprogrammer/article/details/106459466
今日推荐