第7章 日常维护
PostgreSQL期望能够很容易地进行维护。但与其他数据库一样,繁重的读写和吞吐率会使性能下降。数据库中处理并发读写扩展的方法会留下大量需要清除干净的数据。理解其发生的原因会对确定相关维护执行的频率和周期有很大的帮助。另外一个方法是监控数据库服务器查询执行的效率。
7.1 事务可见性以及多版本并发控制
在数据库的设计方案中有一个是必须要考虑的,如何处理多个客户端对同个数据的访问,PostgreSQL使用的是叫做多版本并发控制(MVVC,Multiversion Concurrency Control)的方法来执行这项操作。MVCC也用于BerkeleyDB、Sybase SQL Anywhere、Oracle以及其他众多的数据库产品。它是个常规的技术,没有对PostgreSQL做特别的设置。对MVCC的介绍文档可以浏览以下网页:http://www.postgresql.org/docs/current/static/mvcc-intro.html,但所描述的概念听起来比其本身复杂。通过一些简单的例子可以很容易地理解,下面会进行简单介绍。
7.1.1 可见性的内部计算
理解服务器中是如何实施该内容对预测语句如何执行也是有帮助的,这样可以解释诊断信息。
数据库创建事务后,PostgreSQL会提出一个事务ID计数器,称为事务标识符,用于跟踪事务。当用户向数据库插入新行或更新现有数据时,该操作会插入新行,保存会话的事务ID到字段XID中,也称为xmin
。XID最基本的功能就是可以看到事务被提交的相关信息。
当查询或语句开始时(以何种方法确保跟踪取决于正处于什么样的模式,后面会详细讨论),说明当前事务ID应可见。因为这些行是包含在查询结果中的,如果数据行被提交后,它们的插入 ...
Get PostgreSQL 9.0性能调校 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.