在学习PostgreSQL时,发现默认的Page大小为8k,一直不明白其设定原因。在读到Michael Ralph Stonebraker的《Architecture of a Database System》,知道了“The Five-Minute Rule”,于是在这里和大家分享一下。
1987年,Jim Gray[1]和Gianfranco Putzolu推出了著名的5分钟法则,以权衡内存和I / O容量。他们的计算将使用内存芯片和磁盘驱动器的适当价格,将永久保存一条记录(或页面)的成本与每次访问该记录(或页面)时执行磁盘I / O的成本进行比较。他们的规则的名称是指访问之间的收支平衡时间间隔。如果更频繁地访问记录(或页面),则应将其保存在内存中;否则,它应该保留在磁盘上并在需要时读取。
根据当时的价格和Tandem设备的性能特征,Gray和Putzolu发现保存1KB记录的RAM的价格大约等于每400个访问该记录所需的磁盘驱动器的(部分)价格。秒,他们四舍五入到五分钟。收支平衡间隔大约与记录大小成反比。Gray和Putzolu为100字节的记录花了1个小时,为4 KB页面花了2分钟。
对于这个公式我们可以这样理解。
1MB 永久存放在内存中的代价是0.024$/MB,1MB数据使用一次相当于花0.024$换来的。
1MB 存放在硬盘中的代价是 1.25 (second*disk)/MB *48($/disk) / 1个访问周期 = 1.25 *48/2500= 0.024$,1MB数据放在硬盘中,2500秒访问一次,花0.024$。
如果访问周期小于2500秒,放在硬盘中的代价大,周期大于5100秒,放在硬盘中就赚了。
后来在1997年又发布了《The Five-Minute Rule Ten Years Later, and Other Computer Storage Rules of Thumb》。再次验证了法则的有效性。
当时的各项参数参考值,假设page为4kb:
超过了5分钟法则,而改为8kb,则为:
符合5分钟法则,则此时建议为8kb大小的page。
在2007年,图灵奖[2]获得者的Jim Gray,出海后失踪,至此下落不明,无人能联系到他。而在2009年,Gianfranco Putzolu基于原有的内容推出了《The Five-Minute Rule 20 Years Later》。随着在传统的硬盘和RAM内存的鸿沟之间出现了闪存,五分钟规则现在可以运用到对于今天磁盘比较合适的大页上面,可以应用到它们的快速传输带宽上面,也可以应用到闪存盘上面,这些闪存盘具有小页,很适合快速访问。闪存填补了RAM内存和磁盘之间的鸿沟,在许多方面:访问代价,访问延迟,传输带宽,空间密度和能耗。因此,在未来,闪存会大量应用在操作系统、文件系统和数据库系统中,迫切需要研究合适的系统体系架构。在这些系统中利用闪存的基本的软件体系架构,被称为“扩展缓冲池”和扩展磁盘。


按照上述参数,目前的建议大小为:
如果磁盘还想维持5分钟法则的话,则需要设置page为64kb。
而如果是SSD的话,则page应设为:
如果磁盘还想维持5分钟法则的话,则需要设置page为8kb[3]。
综上所述,目前在磁盘环境下其实应该重新考虑页面大小,比如64kb。而在SSD环境下,8kb还是可以保证5分钟法则的。同时,5分钟法则仅仅是从成本方面考虑,如果在不考虑成本的情况下,追求极限性能,这个就需要通过优化实现了,比如根据业务情况调整页面大小,加大缓存,优化算法等等。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3153590/ ,如需转载,请注明出处,否则将追究法律责任。