<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Open Enterprise: The PostgreSQL Open Source Database Blog from EnterpriseDB &#187; Bruce Momjian</title>
	<atom:link href="http://blogs.enterprisedb.com/author/bruce_momjian/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.enterprisedb.com</link>
	<description>Commentary, tutorials, and announcements surrounding PostgreSQL, Postgres Plus, and open source.</description>
	<lastBuildDate>Wed, 08 Feb 2012 22:53:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Let&#8217;s See work_mem</title>
		<link>http://blogs.enterprisedb.com/2012/02/02/lets-see-work_mem/</link>
		<comments>http://blogs.enterprisedb.com/2012/02/02/lets-see-work_mem/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 14:45:01 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/02/02/lets-see-work_mem/</guid>
		<description><![CDATA[
 
Having shown memory allocation (and deallocation) in my previous blog post, I would like to show work_mem in action.
First, I ran the following database session using a ~6k RPM drive:
Continue Reading »
Let&#8217;s See work_mem]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#February_2_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#February_2_2012"> </a></p>
<p>Having shown memory allocation (and deallocation) in my previous <a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/blogs/pgblog/2012.html#February_1_2012">blog post</a>, I would like to show <a class="txt2html" style="text-decoration: none" href="http://www.postgresql.org/docs/9.1/static/runtime-config-resource.html#RUNTIME-CONFIG-RESOURCE-MEMORY"><em>work_mem</em></a> in action.</p>
<p>First, I ran the following database session using a <a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/blogs/pgblog/2012.html#January_20_2012">~6k RPM drive</a>:</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#February_2_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/02/02/lets-see-work_mem/' class='retweet vert' >Let&#8217;s See work_mem</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/02/02/lets-see-work_mem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Postgres Memory Surprises</title>
		<link>http://blogs.enterprisedb.com/2012/02/01/postgres-memory-surprises/</link>
		<comments>http://blogs.enterprisedb.com/2012/02/01/postgres-memory-surprises/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 14:15:01 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/02/01/postgres-memory-surprises/</guid>
		<description><![CDATA[
 
In my previous blog entry, I analyzed how various tools (ps and smem) report memory usage.  In summary:

ps columns TRS, DRS, and VSZ report virtual address space allocated, not actual RAM allocated.
smem&#8217;s USS reports a process&#8217;s private (unshared) memory allocated.
smem&#8217;s PSS is a sum of process&#8217;s private memory allocated and a proportional amount of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#February_1_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#February_1_2012"> </a></p>
<p>In my previous <a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/blogs/pgblog/2012.html#January_30_2012">blog entry</a>, I analyzed how various tools (<em>ps</em> and <em>smem</em>) report memory usage.  In summary:</p>
<ul>
<li><em>ps</em> columns <em>TRS</em>, <em>DRS</em>, and <em>VSZ</em> report virtual address space allocated, not actual RAM allocated.</li>
<li><em>smem</em>&#8217;s <em>USS</em> reports a process&#8217;s private (unshared) memory allocated.</li>
<li><em>smem</em>&#8217;s <em>PSS</em> is a sum of process&#8217;s private memory allocated and a proportional amount of shared memory (both System V shared memory, like Postgres&#8217;s shared_buffers, and shared libraries).</li>
<li><em>RSS</em> shows actual RAM allocated, private and shared.</li>
</ul>
<p>With these issues understood, let&#8217;s look at a running Postgres cluster:</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#February_1_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/02/01/postgres-memory-surprises/' class='retweet vert' >Postgres Memory Surprises</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/02/01/postgres-memory-surprises/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Revisiting Memory Reporting</title>
		<link>http://blogs.enterprisedb.com/2012/01/30/revisiting-memory-reporting/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/30/revisiting-memory-reporting/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 16:00:00 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/30/revisiting-memory-reporting/</guid>
		<description><![CDATA[
 
Memory is very important to databases — much more so than for typical applications (presentation).  Unfortunately, because memory allocation is so
complex, it is often hard to figure out how physical RAM is being used.  There are several reasons for the complexity:

Virtual Memory: CPUs in virtual memory mode don&#8217;t access RAM directly, but rather [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_30_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_30_2012"> </a></p>
<p>Memory is very important to databases — much more so than for typical applications (<a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/presentations/overview.html#hw_selection">presentation</a>).  Unfortunately, because memory allocation is so<br />
complex, it is often hard to figure out how physical RAM is being used.  There are several reasons for the complexity:</p>
<ul>
<li><strong>Virtual Memory:</strong> CPUs in virtual memory mode don&#8217;t access RAM directly, but rather through <a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/Page_table">page tables</a>.</li>
<li><strong>Segmentation:</strong> Memory is allocated in specific <a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/Segmentation_%28memory%29">segments</a>:<br />
<a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/Text_segment">text(code)</a>, <a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/Data_segment">data</a>, and stack.</li>
<li><strong>Sharing:</strong> physical RAM is often shared by multiple processes, either in read-only mode (program instructions), shared mode (read/write of share memory), or <a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/Copy-on-write">copy-on-write</a> (create a new copy on write; used by <a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/Fork_%28operating_system%29">fork</a>).</li>
</ul>
<p>Robert Haas&#8217;s excellent <a class="txt2html" style="text-decoration: none" href="http://rhaas.blogspot.com/2012/01/linux-memory-reporting.html">blog post</a> highlighted much uncertainty about how to analyze memory usage for specific processes, especially Postgres.  I commented on his blog, as did others, and now have a much clearer idea of how to study memory usage.  A <a class="txt2html" style="text-decoration: none" href="http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxMemoryStats">blog post</a> by Chris Siebenmann directly addresses some of my and Robert&#8217;s questions, and suggests <a class="txt2html" style="text-decoration: none" href="http://www.selenic.com/smem/">smem</a> as a way to analyze memory, especially the sharing of memory.  It was interesting to learn that smem was designed specifically to address the problems Robert outlined (<a class="txt2html" style="text-decoration: none" href="http://lwn.net/Articles/230975/">2007</a>, <a class="txt2html" style="text-decoration: none" href="http://lwn.net/Articles/329458/">2009</a>).</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_30_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/01/30/revisiting-memory-reporting/' class='retweet vert' >Revisiting Memory Reporting</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/30/revisiting-memory-reporting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NoSQL Databases as the New Scripting Language</title>
		<link>http://blogs.enterprisedb.com/2012/01/27/nosql-databases-as-the-new-scripting-language/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/27/nosql-databases-as-the-new-scripting-language/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 16:00:00 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/27/nosql-databases-as-the-new-scripting-language/</guid>
		<description><![CDATA[
 
This video presentation by Dwight Merriman (MongoDB) at OSCON Data 2011 explores the role of NoSQL databases.  He makes some very interesting points:

NoSQL was created to allow horizontal, read-write scaling
NoSQL uses a dynamic schema
NoSQL is similar to dynamically-typed languages, e.g. Perl, PHP
NoSQL has serious limitations compared to relational data storage, e.g. reporting

What I found [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_27_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_27_2012"> </a></p>
<p>This <a class="major" style="text-decoration: underline" href="http://www.youtube.com/watch?v=56TTOqMOkoY">video presentation</a> by Dwight Merriman (MongoDB) at OSCON Data 2011 explores the role of NoSQL databases.  He makes some very interesting points:</p>
<ul>
<li>NoSQL was created to allow <a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012">horizontal, read-write scaling</a></li>
<li>NoSQL uses a dynamic schema</li>
<li>NoSQL is similar to dynamically-typed languages, e.g. Perl, PHP</li>
<li>NoSQL has serious limitations compared to relational data storage, e.g. reporting</li>
</ul>
<p>What I found most interesting about his presentation was the comparison to dynamically-typed languages.  When dynamically-typed scripting languages started to become popular years ago, there was a sense that they were only for trivial applications, compared to compiled language that were for serious work.  As CPUs became faster, scripting languages were increasingly used for production applications, particularly web applications that are modified frequently.  There might be a similar pattern now in the (improper?) dismissal of NoSQL for serious applications.</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_27_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/01/27/nosql-databases-as-the-new-scripting-language/' class='retweet vert' >NoSQL Databases as the New Scripting Language</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/27/nosql-databases-as-the-new-scripting-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalability What?</title>
		<link>http://blogs.enterprisedb.com/2012/01/26/scalability-what/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/26/scalability-what/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 17:00:01 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/26/scalability-what/</guid>
		<description><![CDATA[
 The term &#8220;scalability&#8221; gets injected into database conversations often, but scalability discussions often end without a clear consensus. I believe this is because &#8220;scalability&#8221;, like &#8220;replication&#8221;, actually means different things to different people.
There are two dimensions to database scalability;  the first dimension specifies if additional servers are involved:
 
 
vertical: The hardware capabilities of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"> </a>The term &#8220;scalability&#8221; gets injected into database conversations often, but scalability discussions often end without a clear consensus. I believe this is because &#8220;scalability&#8221;, like &#8220;replication&#8221;, actually means different things to different people.</p>
<p>There are two dimensions to database scalability;  the first dimension specifies if additional servers are involved:</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"> </a></p>
<ul><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"> </a></p>
<li><strong>vertical:</strong> The hardware capabilities of a single database server are increased to increase throughput</li>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"> </a></p>
<li><strong>horizontal:</strong> The number of a database servers is increased to increase throughput</li>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"> </a></ul>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"> </a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012"></a><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_26_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/01/26/scalability-what/' class='retweet vert' >Scalability What?</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/26/scalability-what/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Increasing Database Reliability</title>
		<link>http://blogs.enterprisedb.com/2012/01/25/increasing-database-reliability/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/25/increasing-database-reliability/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 13:15:01 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/25/increasing-database-reliability/</guid>
		<description><![CDATA[
 
While database software can be the cause of outages, for Postgres, it is often not the software but the hardware that causes failures — and storage is often the failing component.  Magnetic disk is one of the few moving parts on a computer, and hence prone to breakage, and solid-state drives (SSDs) have a finite [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_25_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_25_2012"> </a></p>
<p>While database software can be the cause of outages, for Postgres, it is often not the software but the hardware that causes failures — and storage is often the failing component.  Magnetic disk is one of the few moving parts on a computer, and hence prone to breakage, and solid-state drives (<a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/Solid-state_drive">SSDs</a>) have a finite write limit.</p>
<p>While waiting for storage to start making loud noises or fail is an option, a better option is to use some type of monitoring that warns of storage failure before it occurs, e.g. enter <a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/S.M.A.R.T.">SMART</a>.  SMART is a system developed by storage vendors that allows the operating system to query diagnostics on the drive and warn of unusual storage behavior before failure occurs.  While read/write failures are reported by the kernel, SMART parameters often warn of danger before failure occurs.  Below is the SMART output from a Western Digital (WDC) <a class="txt2html" style="text-decoration: none" href="http://www.amazon.com/Western-Digital-Caviar-Desktop-WD20EARX/dp/B004VFJ9MK">WD20EARX</a> magnetic disk drive:</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_25_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/01/25/increasing-database-reliability/' class='retweet vert' >Increasing Database Reliability</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/25/increasing-database-reliability/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Most Important Postgres CPU Instruction</title>
		<link>http://blogs.enterprisedb.com/2012/01/24/the-most-important-postgres-cpu-instruction/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/24/the-most-important-postgres-cpu-instruction/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 13:30:01 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/24/the-most-important-postgres-cpu-instruction/</guid>
		<description><![CDATA[Postgres consists of roughly 1.1 million lines of C code, which is compiled into an executable with millions of CPU instructions.  Of the many CPU machine-language instructions in the Postgres server executable, which one is the most important?  That might seem like an odd question, and one that is hard to answer, but [...]]]></description>
			<content:encoded><![CDATA[<p>Postgres consists of roughly 1.1 million lines of C code, which is compiled into an executable with millions of CPU instructions.  Of the many CPU machine-language instructions in the Postgres server executable, which one is the most important?  That might seem like an odd question, and one that is hard to answer, but I think I know the answer.</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_24_2012"> </a></p>
<p>You might wonder, &#8220;If Postgres is written in C, how would we find the most important machine-language instruction?&#8221;  Well, there is a trick to that.  Postgres is not completely written in C.  There is a very small file (1000 lines) with C code that adds specific assembly-language CPU instructions into the executable.  This file is called <a class="major" style="text-decoration: underline" href="http://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/include/storage/s_lock.h;hb=HEAD">s_lock.h</a>.  It is an include file that is referenced in various parts of the server code that allows very fast locking operations.  The C language doesn&#8217;t supply fast-locking infrastructure, so Postgres is required to supply its own locking instructions for all twelve supported CPU architectures. (Operating system kernels do supply locking instructions, but they are much too slow to be used for Postgres.)</p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_24_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/01/24/the-most-important-postgres-cpu-instruction/' class='retweet vert' >The Most Important Postgres CPU Instruction</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/24/the-most-important-postgres-cpu-instruction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Lessons From My Server Migration</title>
		<link>http://blogs.enterprisedb.com/2012/01/23/more-lessons-from-my-server-migration/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/23/more-lessons-from-my-server-migration/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 14:30:02 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/23/more-lessons-from-my-server-migration/</guid>
		<description><![CDATA[
 
The new server is 2-10 times faster than my old 2003 server, but that 10x speedup is only possible for applications that:

Do lots of random I/O, thanks to the SSDs.  Postgres already supports tablespace-specific random_page_cost settings, but it would be interesting to see if there are cases that can be optimized for low random pages costs. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_23_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_23_2012"> </a></p>
<p>The <a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/blogs/pgblog/2012.html#January_20_2012">new server</a> is 2-10 times faster than my old 2003 server, but that 10x speedup is only possible for applications that:</p>
<ul>
<li>Do lots of random I/O, thanks to the SSDs.  Postgres already supports tablespace-specific <a class="txt2html" style="text-decoration: none" href="http://www.postgresql.org/docs/9.1/static/runtime-config-query.html#RUNTIME-CONFIG-QUERY-CONSTANTS">random_page_cost</a> settings, but it would be interesting to see if there are cases that can be optimized for low random pages costs.  This is probably not an immediate requirement because the in-memory algorithms already assume a low random page cost.</li>
<li>Can be highly parallelized.  See my previous <a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/blogs/pgblog/2011.html#December_5_2011">blog entry</a> regarding parallelism.  The 16 virtual cores in this server certainly offer more parallelism opportunities than my old two-core system.</li>
</ul>
<p>Other observations:</p>
<ul>
<li>It takes serious money to do the job right, roughly USD $4k — hopefully increased productivity and reliability will pay back this investment.</li>
<li>I actually started the upgrade two years ago by adjusting my scripts to be more portable;  this made the migration go much smoother. The same method can be used for migrations to Postgres by rewriting SQL queries to be more portable before the migration.  Reliable hardware is often the best way to ensure Postgres reliability.</li>
<li>My hot-swappable SATA-2 drive bays allow for a flexible hard-drive-based backup solution (no more magnetic tapes).  File system snapshots allow similar backups for Postgres tablespaces, but it would be good if this were more flexible.  It would also be cool if you could move a drive containing Postgres tablespaces from one server to another (perhaps after freezing the rows).</li>
</ul>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_23_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/01/23/more-lessons-from-my-server-migration/' class='retweet vert' >More Lessons From My Server Migration</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/23/more-lessons-from-my-server-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Server</title>
		<link>http://blogs.enterprisedb.com/2012/01/20/new-server/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/20/new-server/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 13:30:01 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/20/new-server/</guid>
		<description><![CDATA[
 
A few weeks ago, I finally replaced my eight-year-old home server.  The age of my server, and its operating system, (BSD/OS, last officially updated in 2002) were a frequent source of amusement among Postgres community members.  The new server is:

Super Micro 7046A-T 4U Tower Workstation
2 x Intel Xeon E5620 2.4GHz Quad-Core Processors
Crucial 24GB Dual-Rank PC3-10600 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_20_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_20_2012"> </a></p>
<p>A few weeks ago, I finally replaced my eight-year-old home server.  The age of my server, and its operating system, (<a class="txt2html" style="text-decoration: none" href="http://en.wikipedia.org/wiki/BSD/OS">BSD/OS</a>, last officially updated in <a class="txt2html" style="text-decoration: none" href="http://www.bsdnewsletter.com/2002/12/News61.html">2002</a>) were a frequent source of amusement among Postgres community members.  The <a class="txt2html" style="text-decoration: none" href="http://www.avadirect.com/tower-server-configurator.asp?PRID=13634">new server</a> is:</p>
<blockquote><p><span style="white-space: pre;"><br />
Super Micro 7046A-T 4U Tower Workstation<br />
2 x Intel Xeon E5620 2.4GHz Quad-Core Processors<br />
Crucial 24GB Dual-Rank PC3-10600 DDR3 SDRAM<br />
Intel 160GB 320 Series SSD Drive<br />
4 x Western Digital Caviar Green 2TB Hard Drives<br />
</span></p></blockquote>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_20_2012">Continue Reading »</a></p>
<a href='http://blogs.enterprisedb.com/2012/01/20/new-server/' class='retweet vert' >New Server</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/20/new-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TOAST Queries</title>
		<link>http://blogs.enterprisedb.com/2012/01/19/toast-queries/</link>
		<comments>http://blogs.enterprisedb.com/2012/01/19/toast-queries/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 16:00:00 +0000</pubDate>
		<dc:creator>Bruce Momjian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.enterprisedb.com/2012/01/19/toast-queries/</guid>
		<description><![CDATA[
 
As a followup to my previous blog entry, I want to show queries that allow users to analyze TOAST tables.  First, we find the TOAST details about the test heap table:

SELECT oid, relname, reltoastrelid, reltoastidxid FROM pg_class where relname = 'test';
  oid  &#124; relname &#124; reltoastrelid &#124; reltoastidxid
-------+---------+---------------+---------------
 17172 &#124; test  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_19_2012"></a></p>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_19_2012"> </a></p>
<p>As a followup to my previous <a class="txt2html" style="text-decoration: none" href="http://momjian.us/main/blogs/pgblog/2012.html#January_17_2012">blog entry</a>, I want to show queries that allow users to analyze TOAST tables.  First, we find the TOAST details about the <em>test</em> heap table:</p>
<blockquote>
<pre class="quote_explicit">SELECT oid, relname, reltoastrelid, reltoastidxid FROM pg_class where relname = 'test';
  oid  | relname | reltoastrelid | reltoastidxid
-------+---------+---------------+---------------
 17172 | test    |         <strong>17175</strong> |             0</pre>
<p><a href="http://momjian.us/main/blogs/pgblog/2012.html#January_19_2012">Continue Reading »</a></p></blockquote>
<a href='http://blogs.enterprisedb.com/2012/01/19/toast-queries/' class='retweet vert' >TOAST Queries</a>]]></content:encoded>
			<wfw:commentRss>http://blogs.enterprisedb.com/2012/01/19/toast-queries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

