Gumihoy
哈希(Hash)函数汇总 哈希(Hash)函数汇总
## Fnv FNV-1 hash hash = FNV_offset_basis for each byte_of_data to be hashed hash = hash × FNV_prime
2019-06-14
MySQL索引 MySQL索引
数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据                                 —————————— 《维基百科》 索引是存储引擎用于快速找到记录的一种数据结构      
2019-06-12
MySQL锁 MySQL锁
InnoDB共享锁(shared (S) lock)和 排它锁(exclusive (X) lock)InnoDB实现了两种类型的行级锁: 共享锁(shared (S) lock):允许持有锁的事务读取一行 排它锁(exclusiv
2019-06-06
编译器 vs 解释器:编译器和解释器之间的区别 编译器 vs 解释器:编译器和解释器之间的区别
编译器(Compiler)编译器是一种计算机程序,负责把一种编程语言编写的源码转换成另外一种计算机代码,往往是二进制的形式存在,被称为目标代码(object code)。这个转换的过程通常的目的是生成可执行的程序。 编译器的产出是另外一种代
2019-06-05
《MySQL实战45讲》 《MySQL实战45讲》
《01 | 基础架构:一条SQL查询语句是如何执行的》 《02 | 日志系统:一条SQL更新语句是如何执行的》 《03-事务隔离:为什么你改了我还看不见》 《04 | 深入浅出索引(上)》 《05 | 深入浅出索
2019-06-03
01 | 基础架构:一条SQL查询语句是如何执行的 01 | 基础架构:一条SQL查询语句是如何执行的
这是专栏的第一篇文章,我想来跟你聊聊 MySQL 的基础架构。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整
2019-06-03
02 | 日志系统:一条SQL更新语句是如何执行的 02 | 日志系统:一条SQL更新语句是如何执行的
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又是怎样的呢?之前你可能经常
2019-06-03
03 | 事务隔离:为什么你改了我还看不见 03 | 事务隔离:为什么你改了我还看不见
提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。 最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作
2019-06-03
04 | 深入浅出索引(上) 04 | 深入浅出索引(上)
提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?今天就让我们一起来聊聊这个话题吧。 数据库
2019-06-03
05 | 深入浅出索引(下) 05 | 深入浅出索引(下)
在上一篇文章中,我和你介绍了 InnoDB 索引的数据结构模型,今天我们再继续聊聊跟 MySQL 索引有关的概念。 在开始这篇文章之前,我们先来看一下这个问题: 在下面这个表 T 中,如果我执行 select * from T where
2019-06-03
06 | 全局锁和表锁:给表加个字段怎么有这么多阻碍 06 | 全局锁和表锁:给表加个字段怎么有这么多阻碍
今天我要跟你聊聊 MySQL 的锁, 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,MySQL 里面的锁大致可
2019-06-03
07 | 行锁功过:怎么减少行锁对性能的影响 07 | 行锁功过:怎么减少行锁对性能的影响
在上一篇文章中,我跟你介绍了 MySQL 的全局锁和表级锁,今天我们就来讲讲 MySQL 的行锁。 MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控
2019-06-03
2 / 11