computer science 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...

  • 本文翻译自Berkeley DB 官方文档 Architecting Transactional Data Store applications 一节,主要讲述使用BDB作为存储引擎时提供事务支持的几种进程访问模式。每个BDB环境都对应一个文件系统目录,其中包涵存储的数据和运行时提供的锁资源,互斥变量资源,共享缓冲池等。每个目录可以被多个BDB进程打开访问,但使用复杂度有较大区别。需要说明的是,每一个目录在打开它的BDB进程中被称作一个数据库环境,一个目录可以对应多个环境,一个环境只能对应打开一个目录。几种架构模式分别为: 一个进程 多个相关的进程 多个不相关的进程 正文: 当构建支持事务的应 […]

    Berkeley DB 事务支持的应用架构

    本文翻译自Berkeley DB 官方文档 Architecting Transactional Data Store applications 一节,主要讲述使用BDB作为存储引擎时提供事务支持的几种进程访问模式。每个BDB环境都对应一个文件系统目录,其中包涵存储的数据和运行时提供的锁资源,互斥变量资源,共享缓冲池等。每个目录可以被多个BDB进程打开访问,但使用复杂度有较大区别。需要说明的是,每一个目录在打开它的BDB进程中被称作一个数据库环境,一个目录可以对应多个环境,一个环境只能对应打开一个目录。几种架构模式分别为: 一个进程 多个相关的进程 多个不相关的进程 正文: 当构建支持事务的应 […]

    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...

  • 本文转自 http://blog.163.com/digoal@126/blog/static/163877040201571610166742/  比较详细地介绍了文件读写的几种机制,分析很到位。 [原文] 1. https://www.byvoid.com/blog/fast-readfile/ 2. http://blog.csdn.net/jwh_bupt/article/details/7793549 3. http://blog.csdn.net/jwh_bupt/article/details/8373063 [原文1]  在进行大规模数据处理时,读文件很有可能成为速度瓶颈。不管 […]

    从fread和mmap 谈读文件的性能

    本文转自 http://blog.163.com/digoal@126/blog/static/163877040201571610166742/  比较详细地介绍了文件读写的几种机制,分析很到位。 [原文] 1. https://www.byvoid.com/blog/fast-readfile/ 2. http://blog.csdn.net/jwh_bupt/article/details/7793549 3. http://blog.csdn.net/jwh_bupt/article/details/8373063 [原文1]  在进行大规模数据处理时,读文件很有可能成为速度瓶颈。不管 […]

    Continue Reading...

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

    PG 内存上下文

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

    Continue Reading...

  • 前一阵想着能不能挣点外块改善生活,就应聘当某在线教育的解题员,这是阿里几年前的一套笔试题,也是让我试着做的题。看了下,网上应该没有解答这么详细的,毕竟也花了一些功夫。至于应聘,觉得此公司有点混乱,就罢了。另外貌似也失去了改善生活的动力。不过好东西,还是要放出来~ 1. 有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页? A、7              B、8                            C、9                  […]

    一套笔试题

    前一阵想着能不能挣点外块改善生活,就应聘当某在线教育的解题员,这是阿里几年前的一套笔试题,也是让我试着做的题。看了下,网上应该没有解答这么详细的,毕竟也花了一些功夫。至于应聘,觉得此公司有点混乱,就罢了。另外貌似也失去了改善生活的动力。不过好东西,还是要放出来~ 1. 有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后1,2,3,4,5,1,2,5,1,2,3,4,5,会发生多少缺页? A、7              B、8                            C、9                  […]

    Continue Reading...

  • 使用MPI作为集群通信的工具已经有一段时间,一开始只是粗略的了解了一下它提供的消息传递接口,虽然可以解决大部分问题,但是使用不便,效率较低。这几天仔细看了看官方的文档,在MPI中提供了很多有用的函数接口,使用者完全可以在其上建立灵活的通信层。本文主要介绍集群点对点的通信。 首先看一个简单的例子,从一个节点发送一条message到另一个节点: #include <mpi.h> #include <iostream> #include <cstring> using namespace std; int main(int argc, char** argv) { […]

    MPI 中的点对点通信

    使用MPI作为集群通信的工具已经有一段时间,一开始只是粗略的了解了一下它提供的消息传递接口,虽然可以解决大部分问题,但是使用不便,效率较低。这几天仔细看了看官方的文档,在MPI中提供了很多有用的函数接口,使用者完全可以在其上建立灵活的通信层。本文主要介绍集群点对点的通信。 首先看一个简单的例子,从一个节点发送一条message到另一个节点: #include <mpi.h> #include <iostream> #include <cstring> using namespace std; int main(int argc, char** argv) { […]

    Continue Reading...

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

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

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

    Continue Reading...

  • 本文转载自 这里 ,是英文版的,有一份中文版在 这里,中文的不让转载,只好转英文的了。介绍了C++ 11的几个特性,写的超好,不转不快 ! This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to the language and the standard library, and this article barely scratches the surface. However, I […]

    Ten C++11 Features Every C++ Developer Should Use

    本文转载自 这里 ,是英文版的,有一份中文版在 这里,中文的不让转载,只好转英文的了。介绍了C++ 11的几个特性,写的超好,不转不快 ! This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to the language and the standard library, and this article barely scratches the surface. However, I […]

    Continue Reading...