《PostgreSQL服务器编程》一一1.9 关于缓存

1.9 关于缓存

对于服务端程序设计而言,另外一个可以派上用场的地方是用来缓存数值,这些数值的计算成本较高。这里采用的基本模式是:
1)检查数值是否已经缓存。
2)如果没有数值或者数值过于陈旧,那么计算并且进行数值缓存。
3)返回缓存后的数值。
举个例子,计算一个公司的销售额便是一个非常适合缓存的项目。一家大型零售公司可能拥有100个仓库,其每天可能有百万级的个人销售交易记录。如果公司总部准备查看销售趋势,那相比于对每日百万级的交易数据进行汇总,有一种更高效的处理方法,那就是在仓库层级,将每天的销售数据进行预计算。
如果数值比较简单,比如从一个基于用户ID的单表查看一个用户的信息,你是不需要做任何事情的。当数值在PostgreSQL的内部页面缓存区进行缓存之后,所有对缓存值的查询都变得非常快速,以至于即使在一个非常高速的网络里,查询的大多数时间都花费在网络上,而不是当前的查询本身。在这种情况下,从PostgreSQL数据库获取数据的速度就跟从任何其他内存缓存(比如memcached)一样快速,而且在进行缓存管理时也没有其他的
开销。
另外一个使用缓存的例子是实现物化视图。这些视图只有在需要的时候才进行预计算,而不是每次都要从视图中进行查询。一些SQL数据库把物化视图作为一个分割开的数据库对象,但是在PostgreSQL中,你需要靠自己,使用其他数据库支持的特性将全部工序自
动化。

时间: 2024-12-26 18:24:06

《PostgreSQL服务器编程》一一1.9 关于缓存的相关文章

《PostgreSQL服务器编程》一一导读

前 言 PostgreSQL服务器远远不只是一台数据库服务器.实际上,PostgreSQL甚至可以承担起一个应用程序开发框架的角色,这个框架的优势在于其具备事务支持.大量数据存储.日志记录.系统恢复等功能,以及PostgreSQL引擎提供的许多优秀特性.在蓬勃发展的商业化时代,如果你掌握了足够的PostgreSQL相关知识,你将有能力满足当前人才市场对高级PostgreSQL技能的强烈需求. 本书将带你学习PostgreSQL函数基础知识.在学习过程中,你将会使用各种程序语言(不限于自带的PL/

《PostgreSQL服务器编程》一一第1章 PostgreSQL服务器简介

第1章 PostgreSQL服务器简介 如果你认为PostgreSQL服务器仅仅是一个存储系统,和它交流的唯一办法就是通过SQL语句,那么你就严重了低估了它的特性.这仅仅是这个数据库的特性之一.PostgreSQL服务器是个强大的架构,它可以用来完成各种各样的数据处理,甚至包括一些非数据服务器的工作.它是一个服务器平台,你可以在这个平台上对各种流行的编程语言开发的函数或库进行简单的组合与匹配.我们来看一下这种复杂的多语言工作顺序:1)调用以Perl编写的字符串解析函数.2)把字符串转换成XSLT

《PostgreSQL服务器编程》一一1.8 程序设计最佳实践

1.8 程序设计最佳实践 开发应用程序软件是复杂的.一些有助于管理复杂性的方法非常流行,以至于它们被赋予容易记忆的首字母缩略词.接下来,我们就会介绍一些这样的规则,并介绍如何在服务器程序设计时更好地遵守这些规则.1.8.1 KISS--尽量简单(keep it simple stupid)成功的程序设计的一个重要技术就是编写简单的代码.也就是,你编写的代码3年以后仍然可以很容易理解,并且其他人也可以理解.这种方式并不一定总是行得通,但是尽可能用最简单的方法编写代码总是有意义的.由于各种原因,比如

《PostgreSQL服务器编程》一一2.7 小结

2.7 小结 现在你对PostgreSQL的环境已经有了一些了解,同时你也了解了一些对未来有所帮助的内容.架构PostgreSQL就是为了处理你的需求.但更重要的是,它不会在将来某一天将你全盘推翻.我们已经接触了一些环境的相关知识,当在PostgreSQL的服务器上编程时,我们脑海里也能涌现出一些重要的知识点.如果你没有记住所有的内容,也不要着急.在下一章中,我们会引入一些真正有用的函数.届时,你可以再回到本章,温故而知新,更深入地理解函数的特征.

《PostgreSQL服务器编程》一一2.6 过程化语言

2.6 过程化语言 SQL Server允许你使用任何产生CLR的语言来创建DLL.这些DLL必须在启动的时候被加载到服务器里面.为了在运行时间创建一个程序,并且使它立即可用,唯一的选择就是内建的SQL方言--Transact SQL(TSQL). MySQL有一个叫做插件的功能.其中一种合法的插件类型是过程化语言.几种语言完成加工后,借由插件系统可以和MySQL一起工作.这些语言包括了最流行的几种语言,比如PHP.Python等.这些函数不能被用在存储过程与触发器中,但是它们可以被普通SQL语

《PostgreSQL服务器编程》一一3.2 PL/pgSQL函数的结构

3.2 PL/pgSQL函数的结构 如果我们想运行一个PL/pgSQL函数,实际上并不需要太多元素.以下就是一个非常简单的例子: 前面这个函数显示了最少元素的PL / pgSQL函数.该函数为substring内置函数创建了一个别名mid.对于Microsoft SQL Server或者MySQL的开发者而言,这是一个非常合适的别名,并且他们可以弄明白mid函数的实现过程.同时,这个函数也阐述了最基础的参数传递策略.这些参数在函数中并未被命名而是通过从左至右的相对位置被访问的. PL / pgS

《PostgreSQL服务器编程》一一3.3 条件表达式

3.3 条件表达式 条件表达式允许开发者通过明确的标准来控制函数的动作.下面这个例子使用了CASE语句,通过值来控制字符串的处理.如果该值为空,或者包含一个零长度字符串,则视为空. 这里的设想是,当全名中的任何一个元素缺失时,周边的标点符号和空格也应同时缺失.这个函数会返回一个美国人的全名,且希望名称的各个部分尽可能的完整.当运行这个函数时,我们会看到以下内容: 条件表达式的另外一种使用方法是使用IF/THEN/ELSE块.以下是相同的函数,但使用了IF语句而不是CASE语句. PostgreS

《PostgreSQL服务器编程》一一1.10 总结——为什么在服务器中进行程序设计

1.10 总结--为什么在服务器中进行程序设计 我们在服务器端完成大部分数据操作编程工作,主要优势有以下几点.1.10.1 性能我们进行基于数据的计算几乎总是性能为王,也就是,我们会努力使获得数据的时间周期变得更短.通常在一个典型的数据密集型计算中,我们的大多数时间都集中花费在获得数据上.因此,在计算中,如何使数据访问变得更快就是使整个计算过程变得更高效的最好方法.在我的笔记本电脑上,从100000行记录的数据库中,随机查询一行并返回客户端需要花费2.2ms,但是在数据库内部获取数据,这个操作仅

《PostgreSQL服务器编程》一一1.2 关于本书的代码示例

1.2 关于本书的代码示例 这里输出显示的示例都是使用PostgreSQL的psql工具创建的,psql工具通常是在Linux系统上运行的.如果你使用一个GUI工具(比如pgAdmin3)去访问服务器,绝大多数的代码同样是生效的.当你看见以下的代码行时: postgres=#部分是psql命令显示的提示.本书中的例子已经在PostgreSQL 9.2中测试通过,它们应该可以在PostgreSQL 8.3或更高版本中运行.相比PostgreSQL最近几个版本上的服务器程序设计,其实并没有发生多少根