浅析MySQL InnoDB的事务和并发控制
这部分内容应该算是存储引擎最重要并且最复杂的部分了, 不同的存储引擎区别很大, 实现机制也各不相同,这里仅尝试对InnoDB做一个简单的分析, 也算是最近一段时间收获的总结吧。
这部分内容应该算是存储引擎最重要并且最复杂的部分了, 不同的存储引擎区别很大, 实现机制也各不相同,这里仅尝试对InnoDB做一个简单的分析, 也算是最近一段时间收获的总结吧。
MySQL中“关联(join)”一词所包含的意义比一般意义上理解的要更广泛。总的来说,MySQL认为任何一个查询都是一次“关联”——并不仅仅是一个查询需要到两个表匹配才叫关联,所以在MySQL中,每一个查询,每一个片段(包括子查询,甚至基于单表的SELECT)都可能是关联。
链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。作为一种常用数据结构,链表内置在很多高级的编程语言里面, 因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。
每个查询都从在数据库中找到我们需要的数据开始,然后将这些数据过滤到可以尽快处理和理解。由于查询的各个部分都是按顺序执行的,因此了解执行顺序很重要,这样才能知道在哪可以得到什么样的结果。
Redis是一个使用ANSI C编写的开源内存数据结构存储(in-memory data structure store),但是Redis并没有直接使用C语言传动的字符串表示,而是自己构建了一种名为简单动态字符串(Simple Dynamic Strings, SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。