Buffer与Cache

12月 14th, 2009 | Posted by | Filed under 操作系统

今天Twitter上关于Buffer和Cache讨论得蛮火的,被各种说话一搅和,有点乱了,就干脆整理一下。
首先从翻译上,Buffer应该翻译为“缓冲”,Cache应该翻译为“缓存”,两个完全不是一个东西。
在硬件这一层看,Buffer应该为内存,Cache为CPU集成的告诉缓存。
Buffer为了让不同速度的设备能够同步,建立的一个缓冲区域,写进Buffer的数据是为了从中拿出写入其他设备。
Cache是为了提高读取速度,将经常或马上需要的数据预读到缓存中,写进Cache的数据是为了其他设备从中去读取。
从软件这一层来说,Buffer是块设备的缓冲,Cache是文件系统的缓存。以Linux为例,
Buffer(Buffer Cache)以块形式缓冲了块设备的操作,定时或手动的同步到硬盘,它是为了缓冲写操作然后一次性将很多改动写入硬盘,避免频繁写硬盘,提高写入效率。
Cache(Page Cache)以页面形式缓存了文件系统的文件,给需要使用的程序读取,它是为了给读操作提供缓冲,避免频繁读硬盘,提高读取效率。
总而言之,Buffer里面的东西是为了写到别处去,Cache里面的东西是为了给别处读。
我的理解就是这样,欢迎大牛拍砖~

标签: , ,

Debian下开启snmpd

12月 13th, 2009 | Posted by | Filed under 操作系统

今天想在监控宝搞下我的网站的监控,结果SNMP怎么都获取不到信息,遂Google之。
原来是Debian默认把snmpd设置为只能本地访问,于是改动之。

修改 /etc/default/snmpd。让snmpd监听所有的网卡(默认只监听回环地址127.0.0.1,这种状况下只能本机访问snmp信息)

# snmpd options (use syslog, close stdin/out/err).
#SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1′
SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid’

标签: , ,

aptitude命令的使用

12月 13th, 2009 | Posted by | Filed under 操作系统

因为VPS用的Debian 5.0 64bit系统,在查资料的时候发现不少人都推荐一个aptitude命令来代替apt-get,试用了一下删除依赖包的时候aptitude要比apt-get好,虽然apt-get也有autoremove选项,不过还是决定使用aptitude来管理包。不过发现aptitude和apt-get不能混用,要不然互相都不知道对方做了什么。

aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。

命令 作用
aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件

降低分页操作的数据库成本

12月 9th, 2009 | Posted by | Filed under 未分类

review代码发现一些分页操作中存在SELECT * RROM tbl ORDER BY id DESC LIMIT N,M; 这样的SQL
当翻页很多时, N就会变得很大,这样每次MySQL都要丢弃很多结果集,造成浪费,性能会有很多下降。

其实可以发现,在插入修改并发不大时,每一页的起始和结束id都是固定的,其实在查询每一页的时候都可以知道下一页和上一页的id大致范围,记住这个id,就可以减小N的值,高并发时可以显著提高效率。

即使需要一次跳多页时,N也只需要 每页条数*跳过页数,比从所有记录中去滤掉前面的记录要好的多。

在网上也看到有人跟我差不多的想法:
http://www.sphinxsearch.org/?p=266

这位老兄阐述的比我清楚,验证了我的想法的正确性,跟开发人员做些交流后进行改进。

今天的数据库设计培训

12月 8th, 2009 | Posted by | Filed under 未分类

系统由每一个细节组成,我喜欢这句话。
欢迎大牛拍砖,指出错误和不妥之处。

  tuniu_database_training.pdf (96.3 KiB, 2,334 hits)