使用了索引,查询还是慢?
这篇文章我们从比较宏观的角度来看MySQL中关键字的原理。本文,我们主要探索order by语句的底层原理。阅读完本文,您将了解到: order by语句有哪些排序模式,以及每种排序模式的优缺点; order by语句会用到哪些排序算法,在什么场景下会选择哪种排序算法; 如何查看和分析sql的order by优化手段(执行计划 + OPTIMIZER_TRACE日志); 如何优化order by语句的执行效率?(思想:减小行大小,尽量走索引,能够走覆盖索引最佳,可适当增加sort buffer内存大小) 这里我们从数据结构的维度来看数据和索引,也就是都当成B+树的的,我们需要数据的时候再从存储引擎的B+树中读取。
以下是我们本文作为演示例子的表,假设我们有如下表: 8.2 volatile的内存语义 当写一个 volatile 变量时,JMM 会把该线程对应的本地内存中的共享变量值刷新到主内存。 当读一个 volatile 变量时,JMM 会把该线程对应的本地内存置为无效。线程接下来将从主内存中读取共享变量。 8.3 说说并发编程的3大特性
8.4 什么是内存可见性,什么是指令重排序? 可见性就是指当一个线程修改了共享变量的值时,其他线程能够立即得知这个修改。 指令重排是指JVM在编译Java代码的时候,或者CPU在执行JVM字节码的时候,对现有的指令顺序进行重新排序。 8.5 volatile是如何解决java并发中可见性的问题 底层是通过内存屏障实现的哦,volatile能保证修饰的变量后,可以立即同步回主内存,每次使用前立即先从主内存刷新最新的值。 8.6 volatile如何防止指令重排 也是内存屏障哦,跟面试官讲下Java内存的保守策略:
再讲下volatile的语义哦,重排序时不能把内存屏障后面的指令重排序到内存屏障之前的位置
8.7 volatile可以解决原子性嘛?为什么?不可以,可以直接举i++那个例子,原子性需要synchronzied或者lock保证 (编辑:吉安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |