2017年7月13日
摘要: 上一节我们介绍了PostgreSQL的子查询优化,子查询优化把一部分可以优化的子查询上拉到主查询成为join。 preprocess_expression 将表达式(目标列,where,join,having)简化表达式 eval_const_expressions canonicalize_qua 阅读全文
posted @ 2017-07-13 17:30 bitError 阅读(1717) 评论(0) 推荐(0) 编辑
摘要: 子查询优化 上拉子连接 上拉子连接主要是把ANY和EXIST子句转换为半连接 pull_up_sublinks_jointree_recurse递归上拉子连接函数 pull_up_sublinks_qual_recurse上拉限制条件中的子连接 用于递归上拉限制条件中存在的子连接(ANY,EXIST 阅读全文
posted @ 2017-07-13 17:29 bitError 阅读(2930) 评论(0) 推荐(0) 编辑
摘要: grouping_planner主要做了3个工作: 1. 对集合进行处理 2. 对非SPJ函数进行优化 3. 对SQL查询语句进行物理优化 grouping_planner实现代码如下: query_planner生成最优查询路径 产生两个最优查询路径,主要是cheatest_path(未排序)和s 阅读全文
posted @ 2017-07-13 17:29 bitError 阅读(1357) 评论(0) 推荐(1) 编辑
摘要: 事务简介 事务管理器:有限状态机 日志管理器 CLOG:事务的执行结果 XLOG:undo/redo日志 锁管理器:实现并发控制,读阶段采用MVCC,写阶段采用锁控制实现不同的隔离级别 PostgreSQL为每条事务创建一个postgre进程,并发执行事务。采用分层的机制执行事务,上层事务块和底层事 阅读全文
posted @ 2017-07-13 17:24 bitError 阅读(8796) 评论(0) 推荐(0) 编辑
  2017年7月10日
摘要: Follower处理逻辑 总结 源码差不多看完了,整体挺复杂的,这里总结一下发现和同步的过程。 newEpoch:提供服务的epoch acceptedEpoch:没有确认的epoch,LEADERINFO阶段 currentEpoch:确认的epoch,接收到UPTODATE后 lastLogge 阅读全文
posted @ 2017-07-10 20:05 bitError 阅读(1174) 评论(0) 推荐(0) 编辑
摘要: ZAB状态机 QuorumPeer这个线程负责状态机的维护 阅读全文
posted @ 2017-07-10 20:04 bitError 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 服务器状态 在QuorumPeer中有定义,这个类是一个线程。 1. LOOKING:寻找Leader状态。处于该状态时,它会认为当前集群中没有Leader,进入选举流程。 2. FOLLOWING: 3. LEADING 4. OBSERVING 选票数据结构 QuorumCnxManager:网 阅读全文
posted @ 2017-07-10 20:04 bitError 阅读(529) 评论(1) 推荐(0) 编辑
  2017年6月20日
摘要: 针对gcc编译器 C++内存分配和释放函数 这两个函数都有size参数,作为传入要分配空间的大小,内部实现完全一样。只不过在分配数组空间之前,会在前面的空间,填入数组空间的大小。下面我猜测的伪代码 根据上面的分析,我们知道了只有析构函数有用(non trival)的Object,operator n 阅读全文
posted @ 2017-06-20 11:26 bitError 阅读(527) 评论(0) 推荐(0) 编辑
摘要: 字节对齐简介 内存对齐是编译器为了便于CPU快速访问而采用的一项技术 你还可以通过pragma指令(通常为 pragma pack)强迫编译器不采用处理器惯用的对齐规则。但请别随意运用这种方式,因为它强制生成开销更大、速度更慢的代码。 使用 pragma pack的唯一理由是——假如你需让C语言的数 阅读全文
posted @ 2017-06-20 11:26 bitError 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 所有结果均为32位系统,指针为4个字节 简单继承 对象B的内存布局: 简单继承虚函数 对象B内存布局 简单多重继承 对象C的内存布局 简单多重继承(虚函数) 对象C的内存布局: 菱形继承 对象D的内存布局: 菱形继承(虚继承) 对象D的内存布局: 这里需要注意,因为A中有虚函数,所以虚基类A前面必须 阅读全文
posted @ 2017-06-20 11:16 bitError 阅读(1240) 评论(1) 推荐(0) 编辑