database Archive

  • 前言 内存资源由操作系统管理,分配与回收操作可能会执行系统调用(以 malloc 算法为例,较大的内存空间分配接口是 mmap, 而较小的空间 free 之后并不归还给操作系统 ),频繁的系统调用必然会降低系统性能,但是可以最大限度的把使用完毕的内存让给其它进程使用,相反长时间占有内存资源可以减少系统调用次数,但是内存资源不足会导致操作系统频繁换页,降低服务器的整体性能。 数据库是使用内存的“大户”,合理的内存分配机制就尤为重要,7月月报介绍了 PostgreSQL 的内存上下文,本文将介绍在 MySQL 中又是怎么管理内存的。 基础接口封装 MySQL 在基本的内存操作接口上面封装了一层,增 […]

    MySQL内存分配机制

    前言 内存资源由操作系统管理,分配与回收操作可能会执行系统调用(以 malloc 算法为例,较大的内存空间分配接口是 mmap, 而较小的空间 free 之后并不归还给操作系统 ),频繁的系统调用必然会降低系统性能,但是可以最大限度的把使用完毕的内存让给其它进程使用,相反长时间占有内存资源可以减少系统调用次数,但是内存资源不足会导致操作系统频繁换页,降低服务器的整体性能。 数据库是使用内存的“大户”,合理的内存分配机制就尤为重要,7月月报介绍了 PostgreSQL 的内存上下文,本文将介绍在 MySQL 中又是怎么管理内存的。 基础接口封装 MySQL 在基本的内存操作接口上面封装了一层,增 […]

    Continue Reading...

  • 最近小伙伴在分布式数据库(DPINM)环境下做实验,数据集比较大,分到集群中每台机器上,会报lock不够用的错。Berkeley DB在初始化的时候,就会初始化锁子系统,为锁结构分配内存空间,一旦启动,是不可以动态分配的,如果不够用,就会报错。后来调节了参数,加大了Locks,  Lockers, Locked Object 的最大数量,重启之后被惊呆了,锁子系统映射到文件系统的共享内存空间竟然有60多G,磁盘立马就不够用了(挂载目录只有100G….)。以前看到过配置锁子系统的参数该如何算,总结起来就是能大就大,毕竟不够用重启很麻烦,但万万没想到占这么大的空间,所以还是仔细看看怎么 […]

    Berkeley DB 锁子系统的配置

    最近小伙伴在分布式数据库(DPINM)环境下做实验,数据集比较大,分到集群中每台机器上,会报lock不够用的错。Berkeley DB在初始化的时候,就会初始化锁子系统,为锁结构分配内存空间,一旦启动,是不可以动态分配的,如果不够用,就会报错。后来调节了参数,加大了Locks,  Lockers, Locked Object 的最大数量,重启之后被惊呆了,锁子系统映射到文件系统的共享内存空间竟然有60多G,磁盘立马就不够用了(挂载目录只有100G….)。以前看到过配置锁子系统的参数该如何算,总结起来就是能大就大,毕竟不够用重启很麻烦,但万万没想到占这么大的空间,所以还是仔细看看怎么 […]

    Continue Reading...

  • 最近实验室数据库需要提高安全性,因为以前只有自己人用,基本上是在裸奔,知道端口号和IP就可以连接上,不需要任何认证信息,没有安全可言。最简单的认证方式就是用户名和密码,但平常使用PG的时候都没有用到,就研究了一下PG的认证方式,取取经。 配置与使用 PG的认证方式有很多种,而且对于不同的database,不同的user,不同的访问IP都可以选择不同的方式认证。具体在配置文件pg_hba.conf中说明。 local           DATABASE  USER  METHOD  [OPTIONS] host           DATABASE  USER  ADDRESS  METHOD […]

    PostgreSQL 客户端认证机制

    最近实验室数据库需要提高安全性,因为以前只有自己人用,基本上是在裸奔,知道端口号和IP就可以连接上,不需要任何认证信息,没有安全可言。最简单的认证方式就是用户名和密码,但平常使用PG的时候都没有用到,就研究了一下PG的认证方式,取取经。 配置与使用 PG的认证方式有很多种,而且对于不同的database,不同的user,不同的访问IP都可以选择不同的方式认证。具体在配置文件pg_hba.conf中说明。 local           DATABASE  USER  METHOD  [OPTIONS] host           DATABASE  USER  ADDRESS  METHOD […]

    Continue Reading...

  • 本文首先大体讲一个内存上下文是干什么的,结构是怎么样的。然后具体介绍PG中现有的一套分配策略,并不详细分析源码的每一处(可以参考PG内核分析这本书),而是说说其中思路流程,如何调节参数进行优化。最后介绍如何使用C++重写其中的源码,让内存上下文不仅仅是PG中的一个特性,而是可以作为一个内存分配的库,供其它程序使用。并附上重写后的源码供大家参考。 大体概述 PostgreSQL 从7.1开始支持内存上下文,因为数据库在查询过程中需要不断申请内存空间,但是只有当查询结束后才能够释放内存,这执行之间,就有可能发生内存泄漏问题。内存对于数据库而言极其重要,为了避免内存泄漏,引入了内存上下文机制,所有的 […]

    PG 内存上下文

    本文首先大体讲一个内存上下文是干什么的,结构是怎么样的。然后具体介绍PG中现有的一套分配策略,并不详细分析源码的每一处(可以参考PG内核分析这本书),而是说说其中思路流程,如何调节参数进行优化。最后介绍如何使用C++重写其中的源码,让内存上下文不仅仅是PG中的一个特性,而是可以作为一个内存分配的库,供其它程序使用。并附上重写后的源码供大家参考。 大体概述 PostgreSQL 从7.1开始支持内存上下文,因为数据库在查询过程中需要不断申请内存空间,但是只有当查询结束后才能够释放内存,这执行之间,就有可能发生内存泄漏问题。内存对于数据库而言极其重要,为了避免内存泄漏,引入了内存上下文机制,所有的 […]

    Continue Reading...

  • 趁着五一,劳动一下,把这篇酝酿已久的博客写了。这是去年做的东西,完成了一段时间,经过测试使用还可以,基本可以保证数据库的Durability,无论是突然断电还是磁盘坏了等等。文章的大部分内容都是之前完成的(为了交高级数据库这门课的课程报告….)。适合需要使用Berkeley DB或者其它存储引擎建立自己的备份系统的人阅读和参考。或者是想看看设计思路的~ 摘要 本文所述内容基于实验室的INM DBMS系统,原系统使用嵌入式开源数据库Berkeley DB为存储引擎,构建一种全新的语义数据模型。拥有自己的一套不同于SQL的数据库语言。原系统主要着眼于数据模型的构建,ACID的特性均交给 […]

    基于Berkeley DB的数据库备份系统

    趁着五一,劳动一下,把这篇酝酿已久的博客写了。这是去年做的东西,完成了一段时间,经过测试使用还可以,基本可以保证数据库的Durability,无论是突然断电还是磁盘坏了等等。文章的大部分内容都是之前完成的(为了交高级数据库这门课的课程报告….)。适合需要使用Berkeley DB或者其它存储引擎建立自己的备份系统的人阅读和参考。或者是想看看设计思路的~ 摘要 本文所述内容基于实验室的INM DBMS系统,原系统使用嵌入式开源数据库Berkeley DB为存储引擎,构建一种全新的语义数据模型。拥有自己的一套不同于SQL的数据库语言。原系统主要着眼于数据模型的构建,ACID的特性均交给 […]

    Continue Reading...

  • 都不好意思开头了,又是选的课要提交报告,自我约束写文章确实不行。。希望文章不差就好。上课选分析的模块,拼了老命选上了存储部分,以为可以深入底层,变成高手,找到好工作,迎娶白富美,一看代码才发现,和存储没有半毛钱关系,虽然如此,源码写的确实很好,也是受益不少。PostgreSQL从9.2开始支持Json类型,把它当成标准类型一种,渐渐地提供了12个SQL函数。这篇文章先简单介绍一下Json,然后对于12个函数每一个给出一个执行的例子,最后根据一条SQL语句,从源码角度分析如何执行的。源码那部分跟着代码看效果可能会好很多。 一 Json 简介 JSON用于描述资料结构,有以下形式存在。 物件(ob […]

    PostgreSQL 中的 Json —从使用到源码

    都不好意思开头了,又是选的课要提交报告,自我约束写文章确实不行。。希望文章不差就好。上课选分析的模块,拼了老命选上了存储部分,以为可以深入底层,变成高手,找到好工作,迎娶白富美,一看代码才发现,和存储没有半毛钱关系,虽然如此,源码写的确实很好,也是受益不少。PostgreSQL从9.2开始支持Json类型,把它当成标准类型一种,渐渐地提供了12个SQL函数。这篇文章先简单介绍一下Json,然后对于12个函数每一个给出一个执行的例子,最后根据一条SQL语句,从源码角度分析如何执行的。源码那部分跟着代码看效果可能会好很多。 一 Json 简介 JSON用于描述资料结构,有以下形式存在。 物件(ob […]

    Continue Reading...

  • 本文原作者为何伟平(laser),文章转载来自 www.pgsqldb.org PostgreSQL 简介 摘要 PostgreSQL 是一种非常先进的对象-关系型数据库管理系统(ORDBMS),目前功能最强大,特性最丰富和最先进的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。本文是PostgreSQL长期用户何伟平(Laser/BITBIRD)的文章“PostgreSQL的昨天、今天和明天”的当前版本。 版本 本文是作者何伟平(Laser/BitBIRD)在经过了十余年的 PostgreS […]

    PostgreSQL 昨天,今天和明天

    本文原作者为何伟平(laser),文章转载来自 www.pgsqldb.org PostgreSQL 简介 摘要 PostgreSQL 是一种非常先进的对象-关系型数据库管理系统(ORDBMS),目前功能最强大,特性最丰富和最先进的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。本文是PostgreSQL长期用户何伟平(Laser/BITBIRD)的文章“PostgreSQL的昨天、今天和明天”的当前版本。 版本 本文是作者何伟平(Laser/BitBIRD)在经过了十余年的 PostgreS […]

    Continue Reading...

  • 作业第二弹,讲了四节课的经验型软件工程,要求随便找一个问题,用经验型软件工程的办法研究一下。于是想到实习的时候,老大经常说,现在在项目中基本上不用数据库的外键了。因为改起来太麻烦,费事。就借此复习一下外键内容。此处略去为了交作业强加上去的经验型软件工程流程。 外键简介: 参照完整性 我们常常希望保证一个关系中给定属性集上的取值也在另一个关系的某一属性集的取值中出现,这一条件称为参照完整性。 外键 外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。 举个例子(此例来自数据库系统概 […]

    该不该用外键?

    作业第二弹,讲了四节课的经验型软件工程,要求随便找一个问题,用经验型软件工程的办法研究一下。于是想到实习的时候,老大经常说,现在在项目中基本上不用数据库的外键了。因为改起来太麻烦,费事。就借此复习一下外键内容。此处略去为了交作业强加上去的经验型软件工程流程。 外键简介: 参照完整性 我们常常希望保证一个关系中给定属性集上的取值也在另一个关系的某一属性集的取值中出现,这一条件称为参照完整性。 外键 外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。 举个例子(此例来自数据库系统概 […]

    Continue Reading...

  • 从去年开始,学习Berkeley DB 也有一段时间,因为没有找到比较好的中文书籍,一直断断续续看官方的英文文档,开着有道词典,不认识的单词就划词去查。开始速度很慢,后来熟了一些就能快一点。这两个礼拜正式投入使用,学习实验室INM数据库存储模块,完成了物化视图实例的存储接口。期间也对Berkeley DB的桶操作有了更深入一些的了解。 1.BDB简单存取 BDB是键值对存取,一个键值对叫做一个record,键和值使用相同的数据结构,C++ API中定义为Dbt,用数据的指针和数据的长度初始化Dbt对象。假设key值为“luffy”,value值为“op”。 char *pkey =

    Berkeley DB 的桶操作

    从去年开始,学习Berkeley DB 也有一段时间,因为没有找到比较好的中文书籍,一直断断续续看官方的英文文档,开着有道词典,不认识的单词就划词去查。开始速度很慢,后来熟了一些就能快一点。这两个礼拜正式投入使用,学习实验室INM数据库存储模块,完成了物化视图实例的存储接口。期间也对Berkeley DB的桶操作有了更深入一些的了解。 1.BDB简单存取 BDB是键值对存取,一个键值对叫做一个record,键和值使用相同的数据结构,C++ API中定义为Dbt,用数据的指针和数据的长度初始化Dbt对象。假设key值为“luffy”,value值为“op”。 char *pkey = "luff […]

    Continue Reading...