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,426 hits)