旧·时光 | Time

我的肩上是风,风上是闪烁的星辰。—— 北岛《结局或开始》

MySQL 索引机制背后的隐藏之道

索引的 “哲学思想” 索引是越多越好吗? 数据库对索引结构的要求 磁盘 I/O 与磁盘预读 磁盘 I/O 逻辑磁盘块 磁盘预读 B+ 树的优势 MySQL 中的索引 B-Tree 索引 哈希索引 空间数据索引 全文索引 MyIS...

MySQL InnoDB 中的锁机制

写在前面 数据库本质上是一种共享资源,因此在最大程度提供并发访问性能的同时,仍需要确保每个用户能以一致的方式读取和修改数据。锁机制(Locking)就是解决这类问题的最好武器。

写在前面 数据库本质上是一种共享资源,因此在最大程度提供并发访问性能的同时,仍需要确保每个用户能以一致的方式读取和修改数据。锁机制(Locking)就是解决这类问题的最好武器。 首先新建表 test,其中 id 为主键,name 为辅助索引,address 为唯一索引。 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREME...

MySQL InnoDB 存储引擎简介

MySQL 得益于开放的可插拔设计,允许替换不同的底层存储引擎,InnoDB 就是其中涌现的代表,自 5.5.8 以来已经成为 MySQL 的默认存储引擎

InnoDB 存储引擎 MySQL 得益于开放的可插拔设计,允许替换不同的底层存储引擎,InnoDB 就是其中的代表,最初由第三方公司开发后被 Oracle 收购,是 OLTP 场景下核心表的首选存储引擎,自 5.5 以来已经成为 MySQL 的默认存储引擎。 InnoDB 是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方...

基于 “不可变类” 实现一个线程安全的 Integer 计数器

不可变对象最核心的地方在于不给外部修改共享资源的机会,从而避免多线程情况下由于争抢共享资源导致的数据不一致

写在前面 众所周知,java.lang.String 类没有任何强制同步的代码,但它是线程安全的,原因在于它是不可变类,每次对其操作都是返回一个新的 String 对象。合理使用不可变对象可以达到 lock-free 的效果。 不可变对象最核心的地方在于不给外部修改共享资源的机会,从而避免多线程情况下由于争抢共享资源导致的数据不一致,又是 lock-free 的,避免了用锁带来的性能损耗...

用 Wait 和 Notify 实现 “生产者-消费者” 模型

在实际开发过程中,经常会碰到如下场景:某个模块负责产生数据,然后经由某个共享的缓冲区进行流转,最后这些数据由另一个模块来负责处理

写在前面 在实际开发过程中,经常会碰到如下场景:某个模块负责产生数据,然后经由某个共享的缓冲区进行流转,最后这些数据由另一个模块来负责处理。产生数据的模块,就形象地称为生产者;而处理数据的模块,就称为消费者,中间的仓库可以抽象成任何缓冲区类型的存储介质。 那么这种模型有什么优点呢?第一是解耦,可以将生产者和消费者分隔开,耦合度降低;二是支持并发,生产者把制造出来的数据往缓冲区一丢,就可以...