PostgreSQL提示“诀窍”

这是一个社区维基,用于收集不同的PostgreSQL知识。 没有什么是太常见或太模糊了。 发布任何你知道的可以帮助他人充分利用这个数据库的东西。

性能调整指南: http : //anchor.com.au/hosting/dedicated/Tuning_PostgreSQL_on_your_Dedicated_Server

我学到的关于postgres的第一个便利的事情之一是存储有关postgres实例的信息的一些postgres表,例如:

su - postgres psql SELECT * FROM pg_stat_activity; 

显示你关于postgres实例上当前活动的大量信息,即客户端连接到哪个客户端以及他们当前正在运行什么查询以及多长时间等

  • 永远不要使用规则。
  • 不要从视图中调用视图。
  • 理解视图的select性与视图内的select性不一样。
  • 如果它们不仅仅是一个薄薄的单板,那么这些观点大多是一个坏主意。
  • Postgresql的COPY是脆弱的 ,比以前less,但如果你将使用大量的CSVs,习惯使用脚本语言。
  • 永远不要使用VARCHAR。 插入比较慢,比TEXT存储要大。 不要用它来防止大的插入。 只有在不使用空格填充的情况下才能使用CHAR()的效果。
  • CTE要小心,它们具有不同的性能特征。
  • PLPERL和PLPERLU是最好的东西切面包。

对于新人:

不要只是开始服务,并认为它是开箱即用的。 大多数安装具有内存消耗的默认设置,使服务在PDA上运行。 你会想把这些数字提高一些。

如果您正在调整专用服务器的设置,我select的一个提示是将总内存消耗(共享和每进程)设置为不超过服务器内存的三分之一到二分之一。 原因是PostgreSQL对数据如何被访问做了一些假设。 其中之一就是您的操作系统将知道如何更好地caching文件和数据块,因此您需要将操作系统的内存留给caching文件系统访问。

PostgreSQL响应的信号 (适用于更新的版本)。 感谢Evan Anderson!

到目前为止,对于ServerFault的普遍认同是,JFS是在Linux安装上运行的数据库引擎的首选日志文件系统。

如果我能find其他BSD的build议,那么我将重新编辑并在这里发布。