建立网站代码,网站页尾模板,乐陵seo优化信德,谷歌优化教程目录
1.概述
2.事务
3.索引
3.1索引结构
3.2操作语法 1.概述
场景#xff1a;假如我们需要解散教学部#xff0c;那么该部门下的所有员工都需要删除。如果教学部成功删除了#xff0c;但员工出于某些原因(比如SQL语句写错了等)并没有删除#xff0c;此时就会出现数据…目录
1.概述
2.事务
3.索引
3.1索引结构
3.2操作语法 1.概述
场景假如我们需要解散教学部那么该部门下的所有员工都需要删除。如果教学部成功删除了但员工出于某些原因(比如SQL语句写错了等)并没有删除此时就会出现数据不一致的问题。这时我们可以通过数据库中的事务来解决。
事务是一组操作的集合,它是一一个不可分割的工作单位。事务会把所有的操作作为一个整体向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
场景假如数据库中有一张表表中包含几百万甚至几千万条数据此时我们用查询操作就会很慢因为查询会扫描整张表此时我们可以通过构建索引去快速查找数据。
索引是数据库表中的一种数据结构用于提高数据检索的效率。它们可以被看作是数据库查询的快速通道允许数据库管理系统DBMS快速定位到需要的数据而不必扫描整个表。
2.事务 开启事务后只有当commit前的语句全部成功执行我们才进行commit提交到数据库否则进行rollback回滚操作将数据重新恢复。
实际上事务开启后sql语句进行的操作并不在真的数据库上而是操作了一份副本的数据库只有commit后才会将真的数据库进行修改。这就是事务的隔离性。
--开启事务
start transaction;
--删除部门
delete from dept where id 3;
删除部门下的负工
delete from emp where dept_id 3;
--提交事务
commit;
--回滚事务
rollback;
数据库事务确保了数据的完整性和一致性。事务具有以下四大特性被称为ACID属性 原子性Atomicity事务中的所有操作要么全部完成要么全部不完成不会结束在中间某个点。这保证了数据的完整性不会出现部分更新的情况。 一致性Consistency事务必须保证数据库从一个一致的状态转移到另一个一致的状态。事务执行的结果必须符合所有预定义的规则包括外键约束、触发器等。 隔离性Isolation并发执行的事务之间不会互相影响。每个事务都独立运行不知道其他事务的存在。 持久性Durability一旦事务提交它对数据库的改变就是永久性的即使系统发生故障也不会丢失。
3.索引
索引如同书本中的目录没有目录我们去查找某一章节的内容时就得一页一页地翻。
举例下图中左边没有索引的情况下就是全表扫描。右边建立了二叉搜索树的索引年纪小的放左边年纪大的放右边。这样我们很快就能找到年龄为45的数据。 优点
提高查询速度索引可以显著提高数据检索的速度尤其是在大型数据表中。减少查询中的I/O操作索引帮助数据库管理系统快速定位数据减少了磁盘I/O操作。
缺点
增加存储空间索引需要额外的存储空间尤其是在大型数据库中。增加写操作的开销插入、删除和更新操作会变慢因为索引本身也需要更新。
缺点我们一般忽略不计因为如今磁盘空间都以T计算索引占不了多少空间。其次在业务中查询的操作比增删改三者加起来都要更加频繁因此建立索引是必要的。
3.1索引结构
MySQL数据库支持的索引结构有很多如: Hash索引、BTree索引、 Full-Text索引等。我们平常所说的索引如果没有特别指明都是指默认的BTree结构组织的索引。
如果数据库中的表是按照大小来排序的那么二叉树就会变成中间图的单向列表此时搜索性能就会大打折扣。这时可以采用平衡二叉树或者红黑树解决。
但在实际应用中当数据量很庞大树的深度就会很深此时只要是二叉树它的检索速度都会变慢。B树可以规避这类问题。 B树多路平衡搜索树是一种自平衡的树形数据结构并且广泛用于数据库和文件系统中的索引结构。以下是B树的索引结构图
非叶子节点只起到查找数据的作用并不存储具体的数据具体的数据保存在叶子节点上。所有的key都会出现在叶子节点上比如根节点的6在第一个叶子节点上也有6这个key以此类推。另外它的叶子节点元素是按照大小进行排序的并形成双向链表。 查找过程假如我们要查找53。先通过二分查找的方式定位53在38和67之间因此走p2指针再通过二分查找定位到47和55之间再走p2指针就找到了53和53对应的数据。
以下是B树的一些关键特性 节点结构B树的内部节点可以有多个子节点并且每个内部节点可以存储多个key。键值key用于分割子节点每个键值对应一个子节点。 有序性B树中的键值是有序的这使得它可以高效地执行范围查询。 叶子节点所有的数据记录都存储在叶子节点中叶子节点本身按照键值的顺序链接在一起形成一个链表这便于顺序访问。 高度B树的高度比二叉树低形成的树是矮胖样式的。
B树的设计使得它非常适合作为数据库索引因为它可以提供高效的数据检索尤其是在需要处理大量数据和频繁进行范围查询的场景中。
3.2操作语法
--创建索引
create [unique] index 索引名 on 表名(字段名...);
--查看索引
show index from 表名;
--删除索引
drop index 索引名 on 表名;
数据库会自动给主键id创建一个主键索引它的性能最高。username添加了唯一约束那么也会自动创建一个唯一索引实质上这个唯一约束就是唯一索引。name是我们自己创建的索引。