zoukankan      html  css  js  c++  java
  • Mysql索引优化、JMM内存模型

    Mysql索引优化

    二叉树

    红黑树

    Hash表

    B-Tree(B树)

    先从根节点(每个节点16k)查找,根节点(常驻内存)

    索引的底层数据结构

    B+TreeB+树)

    先从根节点(每个节点16k)查找,根节点(常驻内存)

    可以存储1170*1170*16个索引

    数据库存储引擎(是形容存储的表的结构)(不同表的底层存储的数据结构可能不同)

    索引最后找到的是索引所在行的磁盘地址指针(数据和索引所指的数据的存储是分开的,非聚集索引)

       

    聚集索引就是叶子节点和数据的值是放在一起的(数据和索引所指的数据是存储到一起的)

    B+树必须使用主键来维护B+树的数据结构,整形的数据比较比较快,存储空间更小

    可以使用指针直接查询到相邻的查询节点,不用再次从根节点查询(同层级从左至右依次递增)

       

    联合索引

    一个索引中存储多个数据,从上至下按照字段一次查询

       

    JMM内存模型

    Java线程内存模型

    每次线程工作时,会从主内存的共享变量中拷贝一份到一个线程的工作内存中,

    该线程操作完的数据不会与其他线程共享,也不会再次写入到主内存

       

    可以使用 volatile 关键字使数据被多个线程共享操作(保证变量对多个线程的可见性)

       

    JMM数据原子操作(使用原子操作进行线程之间的数据操作)

       

       

    总线加锁(多线程数据可见性早期的解决方案

    MESI缓存一致性

    如果开启了缓存一致性协议,当一个线程把数据修改了,会立即同步回主内存的数据,

    其他开启缓存一致性协议的线程会监听着总线,发现数值失效后也会立即从主内存到各自线程内部的数据

       

    Volatile可见性底层原理

    Volatile底层是C语言实现的,可以看汇编语言

    汇编的lock加锁操作,是在同步会主内存时,只能该同步的线程操作,只有当主内存同步完成后锁才会释放

  • 相关阅读:
    SpringBoot整合dubbo2.7.12
    linux安装zookeeper
    javaassist创建对象
    jmeter websocket
    jmeter使用
    jmeter返回值乱码
    HTTP 头 Connection:close 作用 和 解决服务器产生大量close_wait问题
    服务器TCP连接中 TIME_WAIT 状态过多
    Chrome 浏览器远程调试 【转】
    拼多多聊天记录监控、拼多多客服机器人代码、拼多多智能机器人代码、拼多多自动发货、拼多多虚拟卡号自动发货
  • 原文地址:https://www.cnblogs.com/ChengR/p/13047573.html
Copyright © 2011-2022 走看看