阅读Redis源码

1. AE事件驱动框架 1.1 polling处理 ae_epoll.c、 ae_kqueue.c、 ae_evport.c、 ae_select.c 这4个文件的功能是完全一样的,提供一致的API接口,给ae.c文件调用 1.2 核心结构体 aeEventLoop 用来创建事件循环 aeCreateEventLoop:初始化一个事件循环结构体(eventL …

阅读全文

数据库事务模型

事务的实现,在不同的数据库系统中是不同的,这是因为事务有着不同的模型,在Jim Gray的《事务处理概念与技术》一书的第四章事务模型中,把事务分为: 1. 平板事务(Flat Transactions):事务块中的所有SQL语句,构成一个逻辑单元,要么都成功,要么因之一失败都回滚。PostgreSQL的事务管理如果不考虑保存点(Savepoint)机制,可以认为就是一个平板类型的事务,事务块内的一 …

阅读全文

内存数据库设计要点总结

因为新型存储器件的飞速发展,DRAM内存器件大小越来越大,导致内存数据库(其实还有内存文件系统)需求越来越强烈,原始基于硬盘为主存储结构的数据库设计因此会有哪些变化呢? 传统硬盘数据库设计特点 首先总结下传统硬盘数据库设计特点为: 使用非易失硬盘作为主要存储,使用易失内存做缓存池(涉及内存与磁盘上以“页”为单位的数据同步) 页为单位的索引数据组织(页号、slot号、header、tuple、blo …

阅读全文