陕西省建设厅执业资格注册中心网站报名,婚庆网页设计作品dw,网站怎么做百度商桥,石家庄网站推广报价#x1f3a5; 个人主页#xff1a;Dikz12#x1f525;个人专栏#xff1a;MySql#x1f4d5;格言#xff1a;那些在暗处执拗生长的花#xff0c;终有一日会馥郁传香欢迎大家#x1f44d;点赞✍评论⭐收藏
目录
索引
概念 索引的相关操作
索引内部数据结构 事务 为… 个人主页Dikz12个人专栏MySql格言那些在暗处执拗生长的花终有一日会馥郁传香欢迎大家点赞✍评论⭐收藏
目录
索引
概念 索引的相关操作
索引内部数据结构 事务 为什么使用事务 事务的使用
事务的特性
事务隔离级别 索引 数据库使用select查询的时候
1.先遍历表
2.把当前的行给带入到条件中看条件是否成立
3.条件成立这样行就保留否则跳过。
如果表非常大这样的遍历成本就比较高至少是O(n),每次读取一个数据都需要读取磁盘开销是很大的。所以就引入了索引索引属于是针对查询操作 引入的优化手段可以通过索引来加快查询速度避免针对表进行遍历。
概念
索引是一种特殊的文件包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引并指定索引的类型各类索引有各自的数据结构实现。 索引的相关操作 创建主键约束PRIMARY KEY、唯一约束UNIQUE、外键约束FOREIGN KEY时会自动创建对应列的索引。 查看索引
show index from 表名; 一个索引是针对一个列来指定的只有针对这一列进行条件查询的时候查询速度才能被索引优化 创建索引
create index 索引名 on 表名(字段名);创建索引操作也是一个危险操作 创建索引的时候需要针对现有的数据进行大规模的重新整理。如果这个表的本来就很大创建索引也很容易数据库服务器给卡住。 删除索引 如果自动创建的索引主键 / 外键 / unique是不能删除的 drop index 索引名 on 表名; 索引内部数据结构 数据库引入的索引是一个改进的树形结构B树N叉搜索树。 了解B树之前还是要先了解下B树.
B树 B树也是N叉搜索树 每个节点上有M个key划分出M1个区间 进行查询的时候就可以直接从根节点出发判定当前要查的数据在节点上的那个区间就决定好下一步往哪里走 进行添加 / 删除元素就可能涉及到节点的拆分 / 节点的合并 B树
B树是堆B树的改进可以说是针对数据库量身定做的。 1.B树是一个N叉搜索树.一个节点上存在N个key划分为N个空间.
2.每个节点上的N个key 最后一个就相当于当前子树的最大值.
3.父节点上的每个key 都会以最大值的身份在子节点的对应区间存在.(key可能会重复出现
就是叶子节点这一层包含了整个树的数据全集
4.B树会使用 链表 这样的结构把叶子节点串起来。
就非常方便的完成数据集合的遍历并且也很方便从数据集合中按照范围取出一个“子集” 经典面试题 B树的优点相对于B树以及哈希、红黑树: 1. N叉搜索树树的高度有限的.降低IO的次数. 2.非常擅长范围查询. 3.所有查询最终都是要落到叶子节点.查询和查询之间的时间开销是稳定的.(不会出现这次快下次慢 4.由于叶子节点是全集会把行数据只存储在叶子节点上; 非叶子节点只是存储一个用来排序的key. 事务 为什么使用事务 开发中经常会涉及到一些场景需要一气呵成 的完成一些操作.比如转账~ 引入事务就是为了避免上诉问题事务就可以把多个sql打包成一个整体可以保证sql要么全部执行要么就“一个都不执行” 。一个都不执行不是真的一个都不执行而是失败之后只是看起来好像都没执行关键操作就是‘“翻新”数据库称为“回滚” - rollback。 事务的使用
1开启事务: start transaction;
2执行各种sql (3) 提交事务结束commit; 主动触发回滚 rollback 出错有很多中情况。 事务的使用没什么说的最重要的是事务背后的一些原理性质的内容 也是经典的面试题 事务的特性
1.原子性回滚的方式保证这一系列操作都能执行正确或者回复如初。
2.一致性事务执行之前和之后数据都不能太离谱。
3.持久性事务做出修改都是在硬盘上持久保存的重启服务器数据仍然是存在的事务执行的修改仍然是有效的。
4.隔离性 前三个都是好理解的第四个隔离性涉及比较多也就单独拿出说。 隔离性 数据库并发执行多个事务的时候会涉及到一些问题. 并发执行 并发程度越高整体效率越高隔离性越差准确性越差 在并发执行时涉及的问题:
1.脏读问题 解决脏读问题核心思路就是针对写操作加锁。 只能读写完之后提交的数据 并发性降低了隔离性提高了效率降低了数据准确性提高了 2. 不可重复读 如果事务A在内部多次读取一个数据的时候出现不同的情况这种就是不可重复读. 事务A 在两次读之间有一个事务B 修改了数据并提交了事务。 解决方法刚才写的时候加锁了写的时候不能读没说读的时候不能写所以需要给读操作也加锁。写的时候不能读读的时候不能写 3.幻读 解决方法 效率 正确性 不同的需求场景 就有不同的要求 mysql服务器也提供了“隔离级别”针对隔离级别程度进行设置应对不同的需求场景。 上述内容就是事务的经典面试题 事务隔离级别
四种隔离级别对应上面的三个问题根据不同的业务场景修改配置文件设置不同的隔离级别。