摘要:
### 什么是 Safepoint - 请看以下代码。请问 num 会输出什么 - 按照惯性思维,应该在休眠一秒之后。 线程里边的循环是没有做完的。num的数据会小于 2000000000 - 但是在实际执行当中 num 输出的是 2000000000 - 说明这个异步线程其实阻塞了主线程。 - 那 阅读全文
摘要:
#### TimerMessageStore 简略介绍 - 延迟队列 `rmq_sys_wheel_timer` - 指定时间的延迟消息。会先投递到 `rmq_sys_wheel_timer` 队列中 - 然后由 `TimerMessageStore` 消费队列数据,将数据消费到 `timerWhe 阅读全文
摘要:
创建Topic的时候为何要指定MessageQueue数量? 简单来说,就是你要指定你的这个Topic对应了多少个队列,也就是多少个MessageQueue。 MessageQueue就是RocketMQ中非常关键的一个数据分片机制,他通过MessageQueue将一个Topic的数据拆分为了很多个 阅读全文
摘要:
转载~ 在很多小型应用中都没真正使用分库分表,但是说起来并不陌生,因为我们在面试中经常会被问到,今天我们从从以下几个方面来聊聊分库分表:「是什么?解决什么?怎么做?为什么要这么做?即:」 分库分表是什么? 分库分表解决什么问题? 分库分表怎么做? 分库分表什么时候做? 分库分表引发的问题是什么? 分 阅读全文
摘要:
转载~ 当我们需要修改一个记录时,数据库会先根据条件找到要修改的数据,然后执行修改写入操作,因此我们再分析写操作的执行过程时,其实是包含读语句的执行过程的。 一、读语句的执行过程 在之前《MySQL运行机制》文中,详细说明了一个查询语句的执行的过程,查询sql的执行过程基本上分为六步: 「建立连接( 阅读全文
摘要:
转载~ 在之前的文章《InnoDB的存储结构》介绍的InnoDB的存储结构的组成中,我们知道Change Buffer也是用InnoDB内存结构的组成部分。 Change Buffer主要是为了在写入是减少磁盘IO而存在的, 一、什么是什么是Change Buffer 「在《Buffer Pool》 阅读全文
摘要:
转载~ 在应用系统中,我们为加速数据访问,会把高频的数据放在**「缓存」**(Redis、MongoDB)里,减轻数据库的压力。 在操作系统中,为了减少磁盘IO,引入了**「缓冲池」**(buffer pool)机制。 MySQL作为一个存储系统,为提高性能,减少磁盘IO,同样具有**「缓冲池」** 阅读全文
摘要:
转载 MySQL中的锁有很多种,各种锁应用在不同的地方。「MySQL依靠锁机制可以让多个事务更新一行数据的时候串行化」。 MySQL中锁总的来说有两种概念:Lock和Latch Latch 称为闩锁(轻量级的锁),因为Latch要求锁定的时间非常短。其目的是用来保证并发线程操作临界资源的正确性,并且 阅读全文
摘要:
转载~ 在互联网技术圈中有一个说法:「MySQL 单表数据量大于 2000 W行,性能会明显下降」。网传这个说法最早由百度传出,真假不得而知。但是却成为了行业内一个默认的标准。 单表超过2000W行数据一定会导致性能下降吗?我认为是不一定的,虽然说建议单表不超过2000W,但是我不接受它的建议可不可 阅读全文
摘要:
转载~ 在上一篇《索引基础知识回顾》中提到索引按照存储结构划分有B-Tree索引、Hash索引、B+Tree索引类型,接下来就学习一下这几种索引结构以及在实际存储引擎中的使用情况 一、Hash索引 「Hash底层是由Hash表来实现的,存储引擎都会【对所有的索引列计算一个哈希码】(hash code 阅读全文