MySQL 5.6 Table cache 简介
一、 Table cache MySQL 5.6后,引入了“table_cache_instances”参数来控制 table cache instance的个数。目前最大值是64,默认值是1。建议值是16,当系统CPU核数高于16时。引入此参数的目的是,提高并发。相当于把table cache 拆成了多个分区,每个分区的打开table句柄数为:table_open_cache / table...
Semaphore vs. Mutex 简单区别
一、前言 最近看了MySQL和PostgreSQL源码对于mutex处理,Semaphore和mutex的关系,有些地方模糊了。想想也是,从大学那会儿学linux内核后,后面很少看那块了,更多的是研究数据库的一些东西。因此,刚好可以补习下,找回记忆。 二、概况 其实从本质上来讲,两都并没有太大区别,...
PostgreSQL Select源码解析
这张时序图比较大,但是大致上描述了PG 处理简单SQL的大致流程。 由客户端发起SQL 语句,PG服务端进程backend接收到语句后,开始执行exec_simple_query()代码。后面所有方法调用均有exec_simple_query()函数直接或者间接发起。 大体上分为以下几个过程:pg_...
PostgreSQL vs. Oracle DML 独立压测
一、压测目的 前面使用Sysbench 默认事务模型,已经对PG和Oracle进行了压测,在性能上没有明显的区分度。 为了更细粒度了解PG和oracle分别在insert,update,delete上的区别,特进行此次压测。另外也是为了在外部上云时,为Oracle向PG迁移时,提供基本性能数据支持。 二、压测结果 此次压测,...
PostgreSQL vs. Oracle 测试
PG vs. Oracle Sysbench 0.5 测试 一、目的 此次测试的目的,仅作为Oracle向PostgreSQL迁移的广义性能对比参考,应用针对性测试后续跟进。 二、测试 测试工具统一采用Sysbench 0.5版本,此版本的一个亮点是测试模型使用lua脚本...
PostgreSQL中page页结构
PostgreSQL中page页结构源码解析 在PG中,磁盘存储和内存中的最小管理单位都是page,也是通常所说的block。一般PG页的大小为8K,在源码编译时可以设置。此后都不可更改,因为许多PG内存结构设计都是以此为基础的。在一个page中,表的记录是从page的底部开始存储,然后慢慢向上涨。Page结构图如...
PostgreSQL FSM(Free Space Map) 源码解读
PostgreSQL FSM(Free Space Map) 源码解读一、FSM设计目的FSM,即空闲空间管理的设计初衷是为了能够快速找到一个页是否有足够的自由空间用来容纳新增的数据。如果没有这样的页,则分配新页。在PG 8.4版本以后,每个relation有自己独立的的FSM空间(以_fsm后辍的文件)。fsm文件:二、FSM原理...