Recent Posts

PostgreSQL 单元测试

less than 1 minute read

背景 http://api.pgxn.org/src/pg_thud/ http://api.pgxn.org/src/pgtap/ https://nose.readthedocs.org/en/latest/ http://www.postgresql.org/docs/9.4/static/regre...

K-Means 数据聚集算法

3 minute read

背景 K-Means是什么?引用一篇网友的文章: http://coolshell.cn/articles/7779.html 引用 最近在学习一些数据挖掘的算法,看到了这个算法,也许这个算法对你来说很简单,但对我来说,我是一个初学者,我在网上翻看了很多资料,发现中文社区没有把这个问题讲得很全面很清楚的文章,...

sync_file_range - sync a file segment with disk (None of these operations writes out the file’s metadata)

1 minute read

背景 sync_file_range 可以将文件的部分范围作为目标,将对应范围内的脏页刷回磁盘,而不是整个文件的范围。 好处是,当我们对大文件进行了修改时,如果修改了大量的数据块,我们最后fsync的时候,可能会很慢。即使fdatasync,也是有问题的,例如这个大文件的长度在我们的修改过程中发生了变化,那么f...

从fread和mmap 谈读文件的性能

less than 1 minute read

背景 原文 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/detai...

DirectIO & BufferedIO

6 minute read

背景 原文 http://blog.csdn.net/bengda/article/details/21871413 正常情况下磁盘上有个文件,如何操作它呢? 读取:硬盘->内核缓冲区->用户缓冲区 写回:用户缓冲区->内核缓冲区->硬盘 ...

lseek, fallocate来快速创建一个空洞文件,lseek不占用空间,fallocate占用空间(快速预分配)

1 minute read

背景 在开发过程中有时候需要为某个文件快速地分配固定大小的磁盘空间,为什么要这样做呢? (1)可以让文件尽可能的占用连续的磁盘扇区,减少后续写入和读取文件时的磁盘寻道开销; (2)迅速占用磁盘空间,防止使用过程中所需空间不足。 (3)后面再追加数据的话,不会需要改变文件大小,所以后面将不涉及metadata...

linux文件系统分配策略

less than 1 minute read

背景 如果fdatasync涉及到meta-data的写(例如改变了文件大小),一样需要等data先落盘,再写meta-data。 这里如果data sync很慢,那就会影响其他人写metadata,例如创建新文件的操作。 writeback除外,因为它不保证data比metadata先落盘。 有效降低me...

试用 PGStrom

5 minute read

背景 PGStrom是一个使用GPU进行并行计算的custom scan provider插件,架构如下: 从WIKI上的文档来看,性能提升非常可观。JOIN的表越多,提升效果越明显。 需要安装cuda7.0的驱动,以及toolkit。 参考 https://developer.nvidia.c...

ext4 mount option data mode: journal ordered writeback

4 minute read

背景 ext4支持3种DATA模式,用来区分记录journal的行为。 ext4的journal类似于PostgreSQL的XLOG,可以用来做灾难恢复,以及确保数据的一致性。 文件在ext4中分两部分存储,一部分是文件的metadata,另一部分是data。 metadata和data的操作日志journ...