• MySQL——简单认识一下索引吧(index)


    一,什么是索引

    简单来说,就是目录,其目的就是为了提高查询的效率,快速定位

    但会消耗小部分空间,降低增删改的效率

    二,如何使用索引

    1.创建索引

    create index 索引名 on 表名/列名 ;

     

    注意:

    1.主键自带一个索引 

    2.表中数据较多时可能会卡死数据库

    2.显示索引

    show index from 表名;

     3.删除索引

    drop index 索引名 on 表名;

    三,索引背后的数据结构是啥样的

    1.哈希表?

    漏!哈希表虽然速度快,但只能查询值相等的情况 ,当进行比较大小的范围查询则不支持

    2.二叉搜索树?

    也漏!数据库数据特别多时,树的高度会异常的高(logN),不太合适

    3.B树?

    也不完美

    B树也是一个N叉搜索树,每个节点包含N-1个值,也可能更少

    N-1个值,就把区间分为N个

    B树的值不能重复出现

    这样做,比二叉树高度减小,IO次数降低

     4.B+树!

    N个值分为N个区间

    B+树的值可以重复出现

     观察叶子节点:12 —> 345 —> 678 —>  9 10 11 —> 12 13 14 15 

    正因为叶子节点是全集数据,只需要把所有的叶子节点,以链表形式首尾相连,方便范围查找

    此时,非叶子节点只需要保存索引即可,在内存中缓存,来减少硬盘IO

    三,事务

    1.什么是事务

    原子性:一系列不能分割的事(要么全部成功,要么全部失败)

    事务就是维持原子性的一组操作

    事务的回滚(rollback):在事务的执行过程中,MySQL会保存每一步执行记录,一旦出现问题就可以根据记录来回滚

    2.事务的使用

    (1).开启事务

    start transaction;

    (2).执行多条SQL语句

    (3).回滚或提交:rollback/commit

    3.事务的特性

    原子性:事务的根本,事务执行中,进行一系列不可分割的操作

    一致性:事务执行前后,数据处在“一致”的状态

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

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

    4.如何解决事务的脏读问题

      类似考试的时候,有人故意写错误答案给别人抄,后面他又偷偷改了。

    可以对写操作加锁,

    加锁前,并发性高,隔离性低;加锁后,隔离性高,并发性低

    5.隔离级别的四种档位

    平衡效率和准确性

    从上到下,准确性提高,效率降低

    1.read uncommitted   

    2.read committed 

    3.repeatable read

    4.serializable 

     

  • 相关阅读:
    算法与数据结构-并行排序算法之双调排序(Bitonic_Sort)
    表单元素——下拉列表
    如何排查CPU飙升的问题所在
    RHCSA 文件的上传下载(Linux-Windows)
    常见的js手写题【总结】
    最新MySql安装教学,非常详细
    多线程笔记第一天(进程的理解、线程的理解与创建、Thread类、线程状态)
    Raft协议浅析
    云原生分级SLA
    【CNN】SENet——将注意力机制引入通道维度
  • 原文地址:https://blog.csdn.net/weixin_63056061/article/details/126185328