摘要:
MySQL源码中自己定义了许多数据结构,放在mysys的目录下,源码中通常都使用这些数据结构来组织存放数据,也更容易实现跨平台。下面先来看下MySQL定义的动态数组:【源代码include/array.h mysys/array.c】typedef struct st_dynamic_array{ ... 阅读全文
摘要:
information_schema是MySQL下的DB, 存储了数据库的数据字典,但OS系统上,并没有information_schema下表的数据和结构文件。所以,MySQL在针对information_schema下的表进行查询的时候,在内存中构造了memory引擎的临时表,把数据填充进去... 阅读全文
摘要:
slave的几个类结构: Master_info:用于IO线程的参数,包括连接master实例的信息。 Relay_log_info:用于sql线程,表示relay log相关的信息。 Slave_worker:继承Relay_log_info,包括一个job队列,用于并行的worker线程。... 阅读全文
摘要:
限制并发select的patch,代码量很少,主要是为了学习mysql的源码,yy一下。增加两个全局控制变量: thread_limit_min thread_limit_max增加一个条件变量: COND_thread_running_limit增加一个新的错误码: concurr... 阅读全文
摘要:
为了方便自己测试和监控,写了三个监控的脚本。 分别监控: 主机【cpu,mem,disk,fs,net】 oracle mysql 脚本如下:hmon.py: monitor Linux os system including cpu,memory,disk,net,file s... 阅读全文
摘要:
lock and latch在oracle中为了保护共享资源,使用了两种不同的锁机制lock和latch,这两种锁有明显不同点:1,lock和pin,采用的是队列的方式,先来先服务的策略,latch和mutex,采用的是抢占的方式,fast fail模式2,lock可以hold的时间比较长,而lat... 阅读全文
摘要:
事务和一致性oracle的redo和undo机制保证了数据库的ACID特性,以及高性能和可恢复特性。redo的数据是记录着数据块变更的顺序的正向数据流,commit时,保证redo同步持久化,保证高性能。恢复的时候,顺序的应用日志。redo的机制相对比较简单。undo记录着数据块的前映像。保证事务的... 阅读全文
摘要:
undo信息oracle中undo的信息主要完成下面的功能:1,构建块一致性读2,回滚事务UBA:undo block address1,块中的事务槽ITL中的UBA表示这个ITL所在的block历经的最后一次改变所对应的undo record所在的UBA,主要用于一致读。2,undo segmen... 阅读全文
摘要:
ACID特性oracle如何使用undo和redo来保证了关系数据库的ACID特性。 ACID的特性简单描述为:Atomic:以事务为单位的原子性Consistency:保证数据一致性Isolation:不同事务之间的隔离性,未提交的事务对其它会话是不可见的Durablity:提交的事务在系统失败的... 阅读全文
摘要:
数据更改oracle core完成了oracle的核心功能,recovery,读一致性等。 深入的了解oracle的机制,就从一个最简单的更新开始。对于oracle来说,最大的一个特性就是写了两次数据:写数据到数据文件中写数据的变更日志到日志文件中对于最常见的数据更新来说,oracle主要做了一下动... 阅读全文