自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

那海蓝蓝的博客

生活点滴,微风拂去

  • 博客(18)
  • 收藏
  • 关注

原创 PostgreSQL之精妙的数据库导入导出工具架构 (三)

(三)导出文件的格式与函数指针的使用海翔语:本节所描述的,是很精妙的设计。利用函数指针,实现多种文件格式的方便定制。1 文件格式PostgreSQL提供四种导出文件格式,具体如下:1)custom(pg_backup_custom.c):二进制格式的备份文件。有文件头、文件体;文件体是一个链表,各个可备份对象在这个链表上存在;每一个可备份对象都有一套统一的结构标识。

2011-11-29 18:17:22 1346

原创 PostgreSQL之精妙的数据库导入导出工具架构 (二)

导入导出工具的基本原理:1 导出工具连接目标数据库,读出要导出的对象的定义和数据(读出用户自定义的对象,系统的对象不导出),以及其他一些信息(如comment、权限)等,对于对象的定义,生成SQL语句;对于对象的数据,生成Insert语句(PostgreSQL对于数据的导出,还提供一种基于自己特有功能的copy方式);把这些生成的SQL语句,置于备份文件中。2 导入工具读取备份文件,即读出

2011-11-25 08:35:19 3339

原创 PostgreSQL之精妙的数据库导入导出工具架构 (一)

任何一个数据库系统,通常都会提供逻辑导入导出工具。如Oracle的exp/imp。PostgreSQL,开源数据库的典范之作,其架构设计之精巧,堪称典范。本文拟分如下部分,从源码角度(基于postgresql-9.1alpha2),逐步剖析其精巧的架构。(一)文件介绍http://blog.163.com/li_hx/blog/static/1839914132011311

2011-11-24 08:40:26 3165

原创 PostgreSQL代码整体结构(三)

1.         src\backend\acess:很重要的一个目录,数据访问层,存放了和索引相关以及事务处理相关的代码。如“图3-事务处理和索引相关结构图”( http://blog.163.com/li_hx/blog/static/183991413201152884321219/ )。本层之下,是数据缓冲区,再下层,是真正的数据存储层。2.         src\backe

2011-11-23 08:35:39 1589

原创 PostgreSQL代码整体结构(二)

src主目录下代码结构而src目录中的文件组织如“图1-代码整体结构图”,我们可以看看主要的目录:1.         src\backend:数据库引擎代码,数据库各个功能进程代码,系统存储部分代码,事务处理代码,查询优化部分代码等。PG最重要的代码都位于此目录。2.         src\bin:数据库外围工具代码,如pg_dump/pg_restore等。3.

2011-11-22 14:38:24 1040

原创 PostgreSQL代码整体结构(一)

整体代码结构基本的文件组织如“图1-代码整体结构图”:1.         config目录:存放了一些系统的配置文件,如c-compiler.m4文件中提供了检测C编译器的宏。2.         contril目录:存放了一些没有集成到PG核心源码中的代码,是PG的有用的一些外围功能代码。3.         doc目录:存放了PG的文档。4.         src目录:

2011-11-21 17:35:43 923

原创 多进程与多线程(十六)

3.2.1        MySQL基本架构

2011-11-18 08:34:54 811

原创 多进程与多线程(十五) ---MySQL

3.2      多线程结构的数据库管理系统――MySQL在MySQL中我们通过搜索CreateProcess等函数可以知晓,MySQL是多线程结构。表1-Windows系统下涉及的函数搜索的函数涉及的文件功能分析_beginthreadexextra\yassl\testsuite\Testsuite.cpp

2011-11-17 08:42:03 3832

原创 多进程与多线程(十四)

3.1.3        掌握PostgreSQL进程结构的主要代码PostgreSQL同进程相关的主要代码包括:src/backend/main/main.c:启动入口,确定启动方式,包括:1)        postmaster方式,多进程、交互式方式2)        postgre方式,单进程、交互式方式3)        bootstrap方式,单进程非交互方式、用于

2011-11-16 08:38:51 975

原创 多进程与多线程(十三)

3.1.2       如何知道PostgreSQL是多进程结构从代码的角度看,我们可从函数“internal_forkexec”来了解系统结构。“internal_forkexec”这个函数的功能是创建子进程,PG根据操作系统差异分别定义了这个函数的实现(CreateProcess或fork),从而实现操作数据库系统层面的无差异化处理。PG的进程主要分为两类,一是系统自身使用的功能进程(

2011-11-15 16:16:29 760

原创 多进程与多线程(十二)

3.1.1        PostgreSQL基本架构如图1-PostgreSQL基本结构图,PostgreSQL数据库服务器由几个主进程组成:1.         postmaster进程是一个主管进程,它生成其他进程并监听用户连接。 2.         用户进程(比如psql,或用户应用程序通过JDBC等接口)用来处理交互式SQL查询。postmaster生成一个或多个名为pos

2011-11-14 08:37:41 894

原创 多进程与多线程(十一)

3         进程与线程实例进程是操作系统分配资源的单位,而线程是操作系统调度的单位。这是一句很值得琢磨的话。比如,多核CPU是否一定能加快程序的运行呢?操作系统怎样才能把多核利用上?这就是操作系统调度相关的问题,只有程序是多线程结构的,才可能被同时被调度执行,从而利用多核实现并行。我们研究一下两个著名的开源数据库系统,看看它们的结构是如何实现的。一个系统是进程结构还是线程结构,

2011-11-11 08:28:40 959

原创 多进程与多线程(十)

2.3     线程的创建与使用创建线程在不同操作系统上有着相似但有不尽相同的函数。它们在不同平台下需要相应的编译器的支持。另外,线程间也存在通讯的问题,如在Windows系统,互锁函数家族只能在单值上运行,根本无法使线程进入等待状态;关键代码段只适用于对单个进程中的线程实施同步;程序员可以使用内核对象来实现线程同步。再比如java,为线程间通讯提供了类为PipedInputStream和Pi

2011-11-10 08:39:14 776

原创 多进程与多线程(九)

2.2      TLS,线程本地存储在多线程编程中, 同一个变量, 如果要让多个线程共享访问, 那么这个变量使用时就需要注意线程安全问题;如果这个变量不想使多个线程共享访问, 那么该怎么办? 呵呵, 这个办法就是TLS, 线程本地存储,即使得变量的生命期局限在一个线程内,让线程独享变量。实施方法是,在变量名前中使用特定标识符限定。       比如,一个支持多操作系统、多线程代码编写的样

2011-11-09 08:23:51 716

原创 多进程与多线程(八)

2.1      线程安全 “线程安全”由多线程对共享资源的访问引起。呵呵,前面讲了共享为线程带来的便利,现在,共享又引发了程序的安全问题了,真是利弊互现,不可偏颇啊。那么,什么是线程安全呢?一般而言,如果调用某个接口时需要我们自己采取同步措施来保护该接口访问的共享资源,则这样的接口不是线程安全的。如果接口中访问的数据都属于私有数据,那么这样的接口是线程安全的,或者几个接口对共享数

2011-11-08 08:42:23 926

原创 多进程与多线程(七)

2          线程线程,何为线程?其实,线程[1]没有明确的定义。我们只能通过描述和特性解释的方式来说说线程。首先,线程比进程“小”。这个“小”包含几个层面的含义:一,“辈分”低,线程隶属于进程,被进程创建。二,“体积”小,线程不是独立体,不象进程一样拥有动态堆、静态数据、程序代码等部分,线程只是在进程空间内,可以拥有自己独立的寄存器和堆栈而已[2]。三,“开销”小,操作系统对

2011-11-04 08:43:45 893

原创 多进程与多线程(六)

1.1.2.3           信号信号的使用由来已久,早在UNIX中就被广泛使用。信号机制的存在,使得父子进程之间可以互相通过“置标志[1]”来通知一个或多个进程异步事件发生。信号又称为软中断,这是因为信号机制是对硬中断的一种模拟,其处理程序运行在用户态(注意,我们需要理解用户态和核心态),所以有较大的时延。软中断通过发送规定的信号到指定进程,被指定的进程定时[2]地查询有无外来信号

2011-11-02 08:41:15 798

原创 多进程与多线程(五)

1.1.2.2          管道管道,就是连接一个进程的输出和另一个进程的输入的单向通道。实质是一个文件。仔细看看管道的定义,就能明白管道的用途。首先,涉及了一个进程和另一个进程,这意味着多进程结构。其次,管道起连接作用,连接不同进程间的输出和输入。第三,管道是单向的,方向是输出到输入。多进程结构其实无所不在的,管道的使用也非常普遍。以我们熟悉的popen(con

2011-11-01 12:24:56 1275

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除