7 冰河winner

尚未进行身份认证

个人邮箱:496221132@qq.com

等级
TA的排名 2k+

公告

鉴于CSDN对版权保护的不作为以及落后的运营手段,本博客将于近期关闭,并清空全部文章。原有文章将会经过再次的校对、整理,转移至本人在简书的博客空间。...

2019-12-03 17:24:19

MySQL之后台线程

InnoDB采用的是多线程模型,后台有多个不同的线程负责处理不同的任务。1. Master Theadmaster thread是一个非常核心的后台线程,具有最高的线程优先级。InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread完成的,比如将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页面的刷新、合并插入缓冲、undo页的回收等。Master Threa...

2019-11-28 00:19:45

MySQL之缓冲池

1、缓冲池的定义应用系统分层架构,为了加速数据访问,会把最常访问的数据放在缓存(cache)里,避免每次都去访问数据库。操作系统会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池机制,以避免每次查询数据都进行磁盘IO。缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。在数据库当中读取页...

2019-11-24 23:17:53

MySQL之MVCC

1、基本概念MVCC(Mutil-Version Concurrency Control),即多版本并发控制,通过保存数据在某个时间点的快照来实现。根据事务开始的时间不同,每个事务对同一张表,用一时刻看到的数据可能是不一样的。MVCC的基本原理如下:每行数据都存在一个版本,每次数据更新时都更新该版本。修改时Copy出当前版本随意修改,各个事务之间无干扰。保存时比较版本号,如果成功(...

2019-11-24 17:28:13

MySQL之binlog

1、基本概念二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但可以通过查询通用日志来查看MySQL执行过的所有语句。...

2019-11-24 01:15:38

MySQL之事务

1、ACID事务是数据库区别于文件系统的重要特性之一。InnoDB的事务完全符合ACID特性。原子性(Atomicity):操作过程不可分割,要么全部成功,要么全部失败一致性(Consistency):完整性约束不被破坏隔离性(Isolution):事务提交前对其他事务不可见持久性(Durability):事务一旦提交,其结果就是永久性的In弄DB中的ACID特性依靠如下机制实现...

2019-11-22 23:32:30

MySQL之锁

1、锁的类型InnoDB实现了如下两种标准的行级锁:共享锁(S Lock):允许事务对一条行数据进行读取排他锁(X Lock):允许事务对一条行数据进行删除或更新如果一个事务T1已经获得了行r的共享锁, 那么另外的事务T2可以立即获得行r的共享锁, 因为读取并没有改变行 r 的数据, 称这种情况为锁兼容 (Lock Compatible)。 但若有其他的事务T3想获得行r的排他锁, 则...

2019-11-17 22:20:28

MySQL之索引

1、索引组织表在InnoDB中,表都是根据主键顺序组织存放的,称为索引组织表(index organized table)。每张表都有个主键,如果没有显示地定义主键,则会按照如下方式选择或创建主键:如果有非空唯一索引,以建表时第一个定义的非空唯一索引作为主键如果没有非空唯一索引,InnoDB会自动创建一个6字节大小的rowid作为主键InnoDB 存储引擎在绝大多数情况下使用 B...

2019-11-15 23:52:21

MySQL之存储结构

1、MySQL的存储结构1.1 MySQL的体系架构ySQL 从第一个版本发布到现在已经有了 20 多年的历史,整个应用的体系结构变得越来越复杂,官方的架构图太庞杂,返璞归真,来看一个简化版的MySQL架构图:连接池、查询缓存、sql解析器、sql优化器等不是MySQL独有的东西,在其他主流数据库中都有各自的组件,只是实现的方式不尽相同而已。MySQL区别于其他数据库的最重要的一个特点就...

2019-11-04 00:18:42

分布式事务

1、什么是分布式事务当所有操作都针对同一台机器的同一个数据库时,可以依靠数据库自身的锁、重做日志等来保证事务的ACID特性。但是,如果一个事务跨越了多个数据库乃至多台机器呢?这时候就需要引入一种协调机制来保证事务的一致性。分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的...

2019-11-03 02:22:23

本地事务

1、引言转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:将A账户的金额减少100元将B账户的金额增加100元在这个过程中可能会出现以下问题:转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增加100元转账操作刚...

2019-11-01 00:38:50

Reference深度剖析

1、引用级别在JVM中,垃圾回收器一直在背后默默地承担着内存回收的工作,我们不需要像使用C语音开发那样小心翼翼地管理内存。但是凡事皆有两面性,这种机制的好处是极大地释放了程序员无处安放的焦虑,坏处是难以对回收过程进行更灵活地干预。为了增加对垃圾回收的力度把控,Java引入了引用级别的概念。在JDK 1.2以前的版本中,只有在对象没有任何其他对象引用它时,垃圾回收器才会对它进行收集。对象只有被...

2019-04-15 15:36:44

偏向锁、轻量级锁及重量级锁

1. 重量级锁内置锁是JVM提供的最便捷的线程同步工具,利用synchronized关键字来修饰同步代码块,我们称这种锁为java的内置锁(intrinsic lock)或者监视器锁(monitor lock)。1.1 监视器模型首先要明确的一点是监视器模型不是Java特有的,它是操作系统层次的概念,是为了实现线程同步而采取的技术手段,任何编程语言的并发设计中都可以出现这个概念。JVM会为...

2018-12-14 15:59:10

JVM中的垃圾回收器

1. 收集器概览Oracle Hotspot JVM中实现了多种垃圾收集器,针对不同的年龄代内存中的对象的生存周期和应用程序的特点,实现了多款垃圾收集器。单线程GC收集器包括Serial和SerialOld这两款收集器,分别用于年轻代和老年代的垃圾收集工作。后来,随着CPU多核的普及,为了更好了利用多核的优势,开发了ParNew收集器,这款收集器是Serial收集器的多线程版本。多线程收集器...

2018-12-13 00:14:03

数据结构之B树、B+树、B*树

1、应用背景二叉查找树、AVL树、红黑树等都属于二叉树的范围,查找的时间复杂度是O(log 2N),与树的深度相关,那么降低树的深度自然会提高查找效率。但是我们面对这样一个实际问题:大规模数据存储中,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下。因此,为了减少...

2018-12-01 00:09:39

数据结构之2-3-4树与2-3树

1. 2-3-4树是什么在二叉树中,每个节点有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree)。2-3-4树就是一种阶为4的多叉树,它像红黑树一样是平衡树,可以保证在O(lgn)的时间内完成查找、插入和删除操作,容易实现,但是效率比红黑树稍差。下图展示了一颗2-3-4树:它有如下特点:每个节点可以保存一个、两个或...

2018-11-21 23:42:51

数据结构之AVL树

1. 什么AVL树AVL树由两位科学家在1962年发表的论文《An algorithm for the organization of information》当中提出,其命名来自于它的发明者G.M. Adelson-Velsky和E.M. Landis的名字缩写。AVL树是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于二叉查找树,它的特点是:任何节点的两个子树的最大高度差为1。上...

2018-11-16 23:28:13

Java 8 之原理篇

1. Lambda实现原理1.1 实例解析先从一个例子开始public class LambdaTest { public static void print(String name, Print print){ print.print(name); } public static void main(String [] args) { String name = "C...

2018-11-12 02:09:44

Java 8 之实战篇

FunctionJDK 1.8 API包含了很多内建的函数式接口,在老Java中常用到的比如Comparator或者Runnable接口,这些接口都增加了@FunctionalInterface注解以便能用在lambda上。在Java8中java.util.function包下的Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持Lambda...

2018-10-30 16:57:22

Java 8 之基础篇

1. lambda表达式从java8出现以来lambda,也可称为闭包(closure),是最重要的特性之一,它可以让我们用简洁流畅的代码完成一个功能。 很长一段时间java被吐槽是冗余和缺乏函数式编程能力的语言,随着函数式编程的流行java8种也引入了这种编程风格。1.1 什么是Lambda?Lambda表达式是一段可以传递的代码,它的核心思想是将面向对象中的传递数据变成传递行为。 我们回...

2018-10-28 21:12:51

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。