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加锁操作,是在同步会主内存时,只能该同步的线程操作,只有当主内存同步完成后锁才会释放

  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/ChengR/p/13047573.html
Copyright © 2011-2022 走看看