<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Ck8BRncyeSp7ImA9WhBaEks.&quot;"><id>tag:blogger.com,1999:blog-17085626</id><updated>2013-05-22T15:14:17.991-07:00</updated><category term="DataDirector" /><category term="postgresql" /><category term="VMware" /><category term="SunBlogs" /><title>Jignesh Shah's  Blog</title><subtitle type="html">Blog about evolving Data technologies like PostgreSQL</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://jkshah.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>176</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/JigneshShahsBlog" /><feedburner:info uri="jigneshshahsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0QAQXc4cCp7ImA9WhBaEkg.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-2323843258379077408</id><published>2013-05-21T23:28:00.000-07:00</published><updated>2013-05-22T13:42:20.938-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-22T13:42:20.938-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="DataDirector" /><title>How to do Postgres Replication and Failover  in  VMware vFabric Data Director 2.7?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;Last week VMware released vFabric Data Director 2.7. Among
the&lt;a href="https://www.vmware.com/support/datadirector/doc/vfabric-data-director-27-release-notes.html" target="_blank"&gt; many new features&lt;/a&gt; for various database, I wish to give a little more insight into my favorite
ones which are regarding Postgres. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;One of the big feature add from a broad perspective&amp;nbsp;is support of Postgres 9.2 based
managed database servers along with replication.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Lets look at how it is done in brief.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;First vFabric Postgres 9.2 base DBVM needs to be uploaded
into Data Director system resource pool and then converted into template. Note
this template is different from vFabric Postgres 9.2 Virtual appliance and is
available on the same location where Data Director 2.7 download exists.&amp;nbsp; Also this DBVM template is based on the latest PostgreSQL 9.2.4 core.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;Next once the template is &amp;nbsp;loaded into the system resource pool it will show
up in Base DBVMs section in System-&amp;gt;Manage and Monor-&amp;gt; Templates-&amp;gt;
BaseDBVMs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;Then you would&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;then &amp;nbsp;&lt;/span&gt;right
click on the base DBVM and select “Convert to Base DB Template”. &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;Here you also have a new feature to add more
disks (think Tablespaces in PostgreSQL) to the template. In Data Director 2.7,
disks are added at the template level.&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Calibri;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;span style="font-family: Calibri;"&gt;&lt;a href="http://3.bp.blogspot.com/-CsFdMANUF7Y/UZxXmmfjIdI/AAAAAAAAAII/5rhayTo2XIo/s1600/dd27-pg92template.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-CsFdMANUF7Y/UZxXmmfjIdI/AAAAAAAAAII/5rhayTo2XIo/s640/dd27-pg92template.jpg" width="624" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-family: Calibri;"&gt;
&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;This process take some time and then it should show up in
Base DB Templates. On the Base DB Template section right click on the newly
created template and select “Validate”. This one creates a test database to see
if it is successful or not before it can be rolled out to the Organizations and
Database groups . Once the validation is a success, right click and select “Assign
it to the resource bundle” and select the resource bundle that will have access
to the template or create a new resource bundle to use the template.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;Note in the Resource bundle creation steps lies yet another new &amp;nbsp;way to separate out
IO on separate datastores since these may need different IO characteristics&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-_AJd_z4gV7s/UZxYAvVNpVI/AAAAAAAAAIQ/EeSjh-l9B4M/s1600/dd27-storageallocation.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="432" src="http://4.bp.blogspot.com/-_AJd_z4gV7s/UZxYAvVNpVI/AAAAAAAAAIQ/EeSjh-l9B4M/s640/dd27-storageallocation.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
The above image shows how the various types of datastores for your OS, Backup, Data and Logs (Data can be multiple location if you need multiple tablespaces)&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: left;"&gt;
&lt;span style="font-family: Calibri;"&gt;Now all the Orgs/Database groups using the resource bundle
will see the new vPostgres 9.2 template.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: left;"&gt;
&lt;span style="font-family: Calibri;"&gt;In a sample demo I created a database called MyDB using&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;few wizard questions.&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt; text-align: left;"&gt;
&lt;span style="font-family: Calibri;"&gt;Now on the DB List we do a right click on the database to
create more replicas &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-NuUZwmwGg5M/UZxYlrhP4YI/AAAAAAAAAIY/1tYtVvVNk_E/s1600/dd27-pgslavecreate.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="481" src="http://1.bp.blogspot.com/-NuUZwmwGg5M/UZxYlrhP4YI/AAAAAAAAAIY/1tYtVvVNk_E/s640/dd27-pgslavecreate.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;br /&gt;
&lt;span style="mso-no-proof: yes;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;Couple of more quick wizard questions and a slave is ready. Similarly you can create more slaves of the same master. Now actually behind the scenes it does all the plumbing right from creating a new clone virtual machine from the master and setting it up using standard PostgreSQL replication on the newly created VM but from a user point of view it it is all point , click and done.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;The database dashboard also has a new portlet to show bit more information about the replication.&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-OcW2uBrQ70g/UZxZNWiz-9I/AAAAAAAAAIg/D7qSbjf4270/s1600/dd27-repportlet.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://2.bp.blogspot.com/-OcW2uBrQ70g/UZxZNWiz-9I/AAAAAAAAAIg/D7qSbjf4270/s640/dd27-repportlet.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;To make a slave as a new master and it will give an option to &amp;nbsp;move all the other
slaves to the new master select as follows:&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-P1-XJ_K0lww/UZxZPoP4m0I/AAAAAAAAAIo/SgFYC5XofhA/s1600/dd27-pgslavepromote.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="209" src="http://1.bp.blogspot.com/-P1-XJ_K0lww/UZxZPoP4m0I/AAAAAAAAAIo/SgFYC5XofhA/s640/dd27-pgslavepromote.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-VApw57aNkpU/UZxZRyRSdOI/AAAAAAAAAIw/2OXrqsLbags/s1600/dd27-pgslavepromote2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="129" src="http://1.bp.blogspot.com/-VApw57aNkpU/UZxZRyRSdOI/AAAAAAAAAIw/2OXrqsLbags/s320/dd27-pgslavepromote2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;br /&gt;
&lt;span style="mso-no-proof: yes;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;After completion of the failover, the status shown will be similar to:&lt;/span&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-48vLzGXdqQw/UZxZTizjcGI/AAAAAAAAAI4/WjWOgXk3hnU/s1600/dd27-pgnewmaster.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="144" src="http://1.bp.blogspot.com/-48vLzGXdqQw/UZxZTizjcGI/AAAAAAAAAI4/WjWOgXk3hnU/s640/dd27-pgnewmaster.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;span style="font-family: Calibri;"&gt;Where the original slave replica is now redirected to the
new Master. The original master is kept as it is for Port-Mortem or other
activities. This also gives a way to use it as new use cases like separating a
slave for test purpose/DR purpose or separating “mirrors” etc. Best of all it
uses all Standard PostgreSQL replication.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
Of course one of the thing that it does not do is re-purpose the original Master as a slave of the new Master. For more details there is a perfect opportunity to find &lt;a href="http://www.pgcon.org/2013/schedule/events/564.en.html" target="_blank"&gt;Heikki Linnakangas from VMware&amp;nbsp;at PGCon&lt;/a&gt; in Ottawa this week and ask him the question after his session .. WHY??? :-)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal" style="margin: 0in 0in 10pt;"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/5-KcJ4BONsA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/2323843258379077408/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=2323843258379077408" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2323843258379077408?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2323843258379077408?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/5-KcJ4BONsA/how-to-do-postgres-replication-and.html" title="How to do Postgres Replication and Failover  in  VMware vFabric Data Director 2.7?" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-CsFdMANUF7Y/UZxXmmfjIdI/AAAAAAAAAII/5rhayTo2XIo/s72-c/dd27-pg92template.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2013/05/how-to-do-postgres-replication-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8GQH06eip7ImA9WhBbFUw.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-563666955225192461</id><published>2013-05-14T00:33:00.000-07:00</published><updated>2013-05-14T00:33:41.312-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-14T00:33:41.312-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>How can PostgreSQL 9.3 beta1 help you?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;a href="http://www.postgresql.org/about/news/1463/" target="_blank"&gt;PostgreSQL 9.3 beta1&lt;/a&gt; is now available. Giving early access to software is always a good idea to test out evolutionary, revolutionary, radical ideas because unless it is field tested, it has not gone through its trial&amp;nbsp;by fire to be proven gold.&lt;br /&gt;
&lt;br /&gt;
There are many new changes introduced&amp;nbsp;in PostgreSQL 9.3 beta1 and I do have few favorites in them. &lt;br /&gt;
&lt;br /&gt;
For example Disk page checksums to detect filesystem failures. In fact this would allow VMware to use the now standard disk page checksum instead of a custom feature. This highly debated feature is required to identify silent bit corruptions (or deter malicious ones).&amp;nbsp;I have been told in talks with database administrators (not just PostgreSQL DBAs) that typically in a year they would face one such incident atleast where one of the disk would show such a bit rot which goes unnoticed without any instrumentations to catch it.&lt;br /&gt;
&lt;br /&gt;
Another change that goes in the right direction is how PostgreSQL maps the shared memory. This small change now allows no kernel changes to be done to start the database with a bigger shared buffer pool. This now allows one less cookbook step to be done to get the database working. Considering that in this cloud world where there are 100,000 VMs running databases one less step is a huge increase in productivity&amp;nbsp;since this step actually required privileges higher than the database instance owner.&lt;br /&gt;
&lt;br /&gt;
Yet another favorite feature is the custom background workers. This new mechanism is certainly a popular one in our team at VMware where are using it heavily to move some of the changes that we had done into custom background workers deployed as extensions and allowed us to align with core PostgreSQL and extra features enabled as extensions as needed.&lt;br /&gt;
&lt;br /&gt;
Next I want to talk of three features : Writeable Foreign Tables and pgsql Foreign Data Wrapper and Automatically update&amp;nbsp;VIEWs&amp;nbsp;together. These features on its own itself are very useful and generic. However when used together it actually opens new possibilities using multiple federated PostgreSQL databases shards with single logical view of the whole database as one. Quite Powerful if you think about it. I hope to see people trying these fundamental features into new derived features now made possible.&lt;br /&gt;
&lt;br /&gt;
Also new JSON functions help PostgreSQL on its evolution to be the Data Platform not just for relational data but also document data. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While I have barely scratched the surface of&lt;a href="http://wiki.postgresql.org/wiki/What%27s_new_in_PostgreSQL_9.3#Updatable_Views" target="_blank"&gt; all the new features&lt;/a&gt; in PostgreSQL 9.3 beta1, I am already excited with this release and the possibilities I see going forward&amp;nbsp; in the world of data.&lt;br /&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/537JNpMBL9I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/563666955225192461/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=563666955225192461" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/563666955225192461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/563666955225192461?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/537JNpMBL9I/how-can-postgresql-93-beta1-help-you.html" title="How can PostgreSQL 9.3 beta1 help you?" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2013/05/how-can-postgresql-93-beta1-help-you.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNSX45fSp7ImA9WhBQEk0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-6782821177618122739</id><published>2013-03-13T14:16:00.002-07:00</published><updated>2013-03-13T14:16:38.025-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-13T14:16:38.025-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="DataDirector" /><title>PyPgDay 2013 - HA / Replication for PostgreSQL in Virtualized Environments</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
My presentation at PyPgDay 2013 on HA and Replication for PostgreSQL on Virtualized Environments&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.slideshare.net/jkshah/py-pg-day2013harep" target="_blank"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-v6RXuCKReDQ/UUDrwH9dCEI/AAAAAAAAAHo/c2nOVNgxCwU/s400/PyPGDay2013_HA_Rep.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/BdndcJq64x8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/6782821177618122739/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=6782821177618122739" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6782821177618122739?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6782821177618122739?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/BdndcJq64x8/pypgday-2013-ha-replication-for.html" title="PyPgDay 2013 - HA / Replication for PostgreSQL in Virtualized Environments" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-v6RXuCKReDQ/UUDrwH9dCEI/AAAAAAAAAHo/c2nOVNgxCwU/s72-c/PyPGDay2013_HA_Rep.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2013/03/pypgday-2013-ha-replication-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAMQH4ycSp7ImA9WhNRGUs.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-2479140319488975784</id><published>2012-11-15T00:23:00.000-08:00</published><updated>2012-11-15T00:23:01.099-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-11-15T00:23:01.099-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>A Step Forward</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Recently I upgraded my&amp;nbsp; "lab" setup.&lt;br /&gt;
Now it currently looks as follows:&lt;br /&gt;
&lt;br /&gt;
* 2x&amp;nbsp; Physical Hosts running vSphere 5.1 &lt;br /&gt;
* Controlled by vCenter 5.1 Server Appliance backed with embedded Postgres Database instance&lt;br /&gt;
* Monitored by vCenter Operations which has two embedded Postgres Database instance in the vApp&lt;br /&gt;
*To monitor my VMs, I installed&amp;nbsp; vFabric Hyperic 5.0 also running embedded Postgres Database VM.&lt;br /&gt;
* DBaaS provider vFabric Data Director 2.5 also installed with its embedded Postgres database instance running too&lt;br /&gt;
&lt;br /&gt;
Now for my VMs: &lt;br /&gt;
* vFabric Postgres 9.1.6.0 VM&amp;nbsp;&amp;nbsp; integrated with vSphere HA&lt;br /&gt;
* My Linux Developer VM running PostgreSQL 9.2.1&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;If you get everything you need with Postgres, why even QA for other databases anymore?&lt;br /&gt;
&lt;a href="http://blogs.vmware.com/vfabric/2012/11/why-hyperic-is-going-to-support-postgresql-only-as-a-backend-database.html" target="_blank"&gt;Well vFabric Hyperic took the first bold step forward&lt;/a&gt;.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/msyvAocH3vk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/2479140319488975784/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=2479140319488975784" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2479140319488975784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2479140319488975784?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/msyvAocH3vk/a-step-forward.html" title="A Step Forward" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2012/11/a-step-forward.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQFQnk5cSp7ImA9WhJaGUw.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-6760845307462449660</id><published>2012-10-10T16:37:00.000-07:00</published><updated>2012-10-10T16:38:33.729-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-10T16:38:33.729-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>SFPUG Oct 2012: DVDStore Benchmark and PostgreSQL</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
I presented the DVDStore Benchmark at SFPUG yesterday night.&lt;br /&gt;
The presentation is available at &lt;a href="http://portal.sliderocket.com/vmware/SFPUG_DVDStore" target="_blank"&gt;http://portal.sliderocket.com/vmware/SFPUG_DVDStore&lt;/a&gt;&lt;br /&gt;
The video is located at &lt;a href="http://www.justin.tv/sfpug/b/335041570" target="_blank"&gt;http://www.justin.tv/sfpug/b/335041570&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;iframe frameborder="0" height="561" scrolling="no" src="http://app.sliderocket.com:80/app/fullplayer.aspx?id=90a7809b-63ed-434f-ae95-b79750c5610b" width="700"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/bsBBek9IY4o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/6760845307462449660/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=6760845307462449660" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6760845307462449660?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6760845307462449660?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/bsBBek9IY4o/sfpug-oct-2012-dvdstore-benchmark-and.html" title="SFPUG Oct 2012: DVDStore Benchmark and PostgreSQL" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2012/10/sfpug-oct-2012-dvdstore-benchmark-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUMQnY8eip7ImA9WhJbEUw.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-3963257241655515432</id><published>2012-09-19T12:42:00.000-07:00</published><updated>2012-09-19T21:44:43.872-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-09-19T21:44:43.872-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>PGOpen 2012: DVDStore Benchmark and PostgreSQL</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
My slides to go with the Demo I did with&lt;a href="http://postgresopen.org/2012/schedule/presentations/128/" target="_blank"&gt; DVDStore Benchmark and PostgreSQL&lt;/a&gt; session.&lt;br /&gt;
&lt;a href="http://portal.sliderocket.com/vmware/PGOpen2012_DVDStore"&gt;http://portal.sliderocket.com/vmware/PGOpen2012_DVDStore&lt;/a&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="593" scrolling="no" src="http://app.sliderocket.com:80/app/fullplayer.aspx?id=f7cebdd5-59d7-4dac-a400-f82118ae26c1" width="739"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Other session presentations are available at https://wiki.postgresql.org/wiki/Postgres_Open_2012&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/ca2H7vjvn2o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/3963257241655515432/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=3963257241655515432" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3963257241655515432?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3963257241655515432?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/ca2H7vjvn2o/pgopen-2012-dvdstore-benchmark-and.html" title="PGOpen 2012: DVDStore Benchmark and PostgreSQL" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2012/09/pgopen-2012-dvdstore-benchmark-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cAQX48fSp7ImA9WhJRF0o.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-2696225671299917938</id><published>2012-07-20T00:57:00.000-07:00</published><updated>2012-07-20T00:57:20.075-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-20T00:57:20.075-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><title>Postgres @ VMware</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Recently VMware vCenter Server Appliance 5.0 u1a&amp;nbsp;was released with embedded Postgres based distribution. Check out the&lt;a href="http://www.vmware.com/support/vsphere5/doc/vsp_vc50_u1a_rel_notes.html" target="_blank"&gt; release notes&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Quote from release notes:&lt;br /&gt;
&amp;nbsp;"&lt;strong&gt;vCenter Server Appliance Database Support&lt;/strong&gt;: The DB2 express embedded database provided with the vCenter Server Appliance has been replaced with VMware vPostgres database. This decreases the appliance footprint and reduces the time to deploy vCenter Server further."&lt;br /&gt;
&lt;br /&gt;
vCenter Server Appliance joins the growing list of VMware products embedding and/or supporting&amp;nbsp;Postgres. &lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/2FA37HMDOJg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/2696225671299917938/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=2696225671299917938" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2696225671299917938?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2696225671299917938?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/2FA37HMDOJg/postgres-vmware.html" title="Postgres @ VMware" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2012/07/postgres-vmware.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EFSXw_cSp7ImA9WhVaFk4.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-2509718953594435939</id><published>2012-05-18T12:11:00.002-07:00</published><updated>2012-06-13T18:00:18.249-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-13T18:00:18.249-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>PgCon 2012: OLTP Performance Benchmarks Overview</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
The slides from my presentation today.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://www.pgcon.org/2012/schedule/attachments/257_PGConf12_OLTP_Benchmarks.pdf" target="_blank"&gt;&lt;img alt="" border="0" height="300" src="http://1.bp.blogspot.com/-Cn3HlYy-wM0/T7aeQg4MvDI/AAAAAAAAAGo/nY9zSLsuvBI/s400/PGConf12_OLTP_Benchmarks.jpg" title="PgCon 2012: OLTP Performance Benchmark Review - Jignesh Shah" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
or access it on the &lt;a href="http://www.pgcon.org/2012/schedule/events/387.en.html" target="_blank"&gt;PGCon Website&lt;/a&gt;.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/h0p5OIi3Ky4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/2509718953594435939/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=2509718953594435939" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2509718953594435939?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/2509718953594435939?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/h0p5OIi3Ky4/pgcon-2012-oltp-performance-benchmarks.html" title="PgCon 2012: OLTP Performance Benchmarks Overview" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Cn3HlYy-wM0/T7aeQg4MvDI/AAAAAAAAAGo/nY9zSLsuvBI/s72-c/PGConf12_OLTP_Benchmarks.jpg" height="72" width="72" /><thr:total>3</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2012/05/pgcon-2012-oltp-performance-benchmarks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UNSXY7eip7ImA9WhRXFE8.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-65027497897812826</id><published>2011-12-20T14:46:00.001-08:00</published><updated>2011-12-20T14:48:18.802-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-20T14:48:18.802-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="DataDirector" /><title>Using DVDStore with PostgreSQL</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
We now have support for PostgreSQL in the popular &lt;a href="http://en.community.dell.com/techcenter/extras/w/wiki/dvd-store.aspx"&gt;DVDStore Benchmark&lt;/a&gt; which stresses database using an emulated DVDStore e-Commerce website. DVDStore Benchmark is maintained by Dave Jaffe (Dell) and&amp;nbsp; &lt;a href="http://virtualtoddsbigblog.blogspot.com/"&gt;Todd Muirhead&lt;/a&gt; (VMware).&amp;nbsp; It is an open source database test kit. The beauty of the benchmark kit is it allows the same web application being deployed either as &lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Java/Tomcat&amp;nbsp; and connect to the database, &lt;/li&gt;
&lt;li&gt;Web Server/PHP and connect to the database, &lt;/li&gt;
&lt;li&gt;IIS/ASP.NET connect to the database or &lt;/li&gt;
&lt;li&gt;Direct connect to the database and invoking the business logic as stored procedures stored on the database itself. &lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Currently the PostgreSQL implementation&amp;nbsp;details&amp;nbsp;are as follows&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Java/Tomcat using PostgreSQL JDBC driver, &lt;/li&gt;
&lt;li&gt;Web Server/PHP&amp;nbsp; using &amp;nbsp;PHP-postgres&amp;nbsp;modules which uses&amp;nbsp; libpq&lt;/li&gt;
&lt;li&gt;Currently there is noIIS/ASP.NET web app&amp;nbsp; implementation for PostgreSQL&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Direct connect to PostgreSQL database and business logic implemented in stored procedures however the driver is implemented using .NET C# and requires Npgsql 2.0.11.0&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Setup instructions for the database are relatively quite easy.&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Download &lt;a href="http://linux.dell.com/dvdstore/ds21.tar.gz"&gt;ds21.tar.gz&lt;/a&gt;&amp;nbsp;&amp;nbsp;and also&amp;nbsp;&lt;a href="http://linux.dell.com/dvdstore/ds21_postgresql.tar.gz"&gt;ds21_postgresql.tar.gz&lt;/a&gt; from&amp;nbsp; &lt;a href="http://linux.dell.com/dvdstore/"&gt;http://linux.dell.com/dvdstore/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Unzip them on the system running PostgreSQL&lt;/li&gt;
&lt;li&gt;The default data size is 10MB. If you want a different size execute &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;'perl Install_DVDStore.pl'&lt;/span&gt; in the ds2 directory. (Expects perl to be available on the system. I used the option 100, MB , PGSQL, LINUX respectively for the options.)&lt;/li&gt;
&lt;li&gt;Assuming you are logged on as the DB Owner and the database is on the localhost at port 5432, execute the script &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;pgsql_create_all.sh&lt;/span&gt; in the ds2/pgsqlds2 directory. It will create a database "ds2", two users "ds2/ds2" and "web/web", create tables, load tables, create indexes, update sequences and finally run analyze. (The script needs to be modified slighly if the database is already hardened and you want to control the creation of database and the users.)&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Setup for the actual load&amp;nbsp;driver is probably easiest on&amp;nbsp; another Windows platform as follows as it was designed for .NET platform.&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Download and install Windows SDK v6.1 and .NET 3.5 framework&amp;nbsp; on a Windows Client machine. &lt;/li&gt;
&lt;li&gt;Once installed start the CMD prompt from &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Programs-&amp;gt; Windows SDKv6.1-&amp;gt; CMD Prompt&lt;/span&gt;. &lt;/li&gt;
&lt;li&gt;Verify the above CMD prompt has path setup for gacutil in windows&amp;nbsp;(Try&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;'gacutil/l'&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;Download Npgsql 2.0.11 for msnet35 and install the dlls using the gacutil.exe (Note other versions of Npgsql&amp;nbsp;may&amp;nbsp;have issues.)&lt;/li&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;gacutil/i Npgsql.dll &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;gacutil/i Mono.security.dll &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;gacutil/i policy-2.0.Npgsql.dll&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
With the above setup you can use the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ds2webdriver.exe&lt;/span&gt; in ds2/drivers or the direct &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ds2pgsqldriver.exe&lt;/span&gt; in ds2/pgsqlds2. More on running the benchmark driver itself&amp;nbsp; in another post.&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/skUk7PTm1ZY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/65027497897812826/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=65027497897812826" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/65027497897812826?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/65027497897812826?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/skUk7PTm1ZY/using-dvdstore-with-postgresql.html" title="Using DVDStore with PostgreSQL" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/12/using-dvdstore-with-postgresql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcEQ307fyp7ImA9WhdaFkU.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-5477524875381038808</id><published>2011-10-26T21:00:00.000-07:00</published><updated>2011-10-26T21:00:02.307-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-26T21:00:02.307-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><category scheme="http://www.blogger.com/atom/ns#" term="DataDirector" /><title>How does PostgreSQL HA works in vFabric Data Director?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Databases go down due to various reasons. Some reasons are known and some unknown.&lt;br /&gt;
Common reasons are hardware failure, software failure, database unresponsive, etc. What is considered as a failure is actually one of the tasks. Various DBA's use a simple select statement as a test to make sure that the database is up and working. But what does one do if that simple select statement fails. I remembers years ago I worked on a module which will start paging&amp;nbsp; engineers in a sequence (and eventually their managers if the engineers failed to respond back in a certain expected way).&amp;nbsp; In this email/text age, scripts will start sending out emails and text messages.&amp;nbsp; What we are is basically in the Event-&amp;gt;React-&amp;gt; Respond mode of operation.&lt;br /&gt;
&lt;br /&gt;
However true HA needs to lower downtime which can&amp;nbsp; only be done by having the mode of operation as Event-&amp;gt;Respond-&amp;gt;React. To explain that when such an event happens, do an automated response first and then React to wake the engineers up :-)&lt;br /&gt;
&lt;br /&gt;
How do you set this up in vFabric Data Director? This can be achieved by selecting the database properties, selecting the Database Configuration tab and set "High Availability" to "Enable". This is also refered as One-Click HA setting.&lt;br /&gt;
&lt;br /&gt;
Of course this assumes that your virtual Data Cluster is set properly for providing the high availability services. How do you set it up properly? Well you need atleast two ESXi Hosts so if one host fails, the other can cover for it. Also vSphere HA property has been enabled in the Virtual Data Center Cluster. Note these settings are all "required" for vFabric Database setup and a "supported" setup does mandate atleast two ESXi Hosts in order for HA to work.&lt;br /&gt;
&lt;br /&gt;
Now that we have gone over the setup requirements, lets go over the scenarios on how the application or user sees it.&amp;nbsp; A user is connected to the database using the connection string. Something happens and the database goes down and the connection drops. Chances are if you reconnect again immediately it may fail. However with certain time which is expected to be less than 5 minutes (which we call our Recovery Time Objective or RTO) &amp;nbsp;by default, if you try again you can connect to the database again. &lt;br /&gt;
&lt;br /&gt;
So what happens in the background? Well if it was Magic, we would not tell you. But it is not really magic though it feels like that. Here is what will typically happen in the background.&lt;br /&gt;
For some reason the PostgreSQL fails to respond anymore it could be a "hung" situation or the PostgreSQL server has died. There is a small heartbeat monitor which figures out the status of the database. If it notices that the hung situation or no DB server process, it will try to restart the database. If the database cannot be restarted (because the whole VM appliance cannot respond anymore), it will in novice terms kill the virtual machine. The vCenter Server which has its own heartbeat on the VM appliance will see that the Virtual Machine has died (irrespective of the Database Monitor which may not be working if the whole host dies), the vCenter Server will restart the VM appliance on another server.&lt;br /&gt;
&lt;br /&gt;
Since shared-storage is a requirement, the VM appliance will start on another host and it will feel like a reboot. Once the VM starts, the PostgreSQL server process will be restarted. At this point of time, the PostgreSQL server goes into recovery mode. The biggest question at this point of time typically is how long will the recovery mode take. Typically based on internal tests even with the heaviest workload on 8vCPU, the recovery time can finish within the checkpoint_timeout settings which means our Recovery Time Objective is guided by checkpoint_timeout + heartbeat latency + the time to restart the VM on another hosts.&amp;nbsp; Overall we try to fit that into our Recovery Time Objective of 5 minutes.&lt;br /&gt;
&lt;br /&gt;
Great the virtual machine has restarted and the database has done its recovery and working again. Now what? Well dont forget in this cloud setup, the easiest thing is to use DHCP addresses. Unfortunately DHCP addresses are not guaranteed to be same after reboot . Plus rebooting on a different host makes it more complex to get the same IP. This IP address change can cause the Database connectivity to be lost to the actual end user.&amp;nbsp;&amp;nbsp; In order to shield the end users from this complexity, we sort of implemented our own Database Name Server. However this can only work by modifying the clients which references the database using this "Virtual Hosts" format so that the clients can always find their intended database without really worrying about where it is running. A minor change in the PostgreSQL clients but a huge complexity reducer for end users to fix their IP addresses or domain names to the changed location.&lt;br /&gt;
&lt;br /&gt;
Aha now this explains why vPostgres ships their own clients and libpq library which is API compatible with standard PostgreSQL libpq library.The libpq library is actually 100% compatible with standard PostgreSQL Libpq library. The only addition it has is the feature of Virtual Hosts which is critical for HA to work seemlessly without the users being concerned about the actual IP of the database. Without the change, HA will not work on the framework. Since it is 100% compatible, if an application works standard libpq it will work with vPostgres libpq. Similar changes are also done in the JDBC driver and ODBC Driver for vPostgres so HA is supported across all supported clients.&lt;br /&gt;
&lt;br /&gt;
That said if you use standard libpq/psql and other standard clients&amp;nbsp;and you know the IP Address of the vPostgres database and connect to it via that IP address (and not the virtual host string) &amp;nbsp;it will still work flawlessly. However if the database goes down and restarts with a new IP address then the client will have no ability to figure out the new IP address and will have to bug the Administrator to figure out the new IP address. &lt;br /&gt;
&lt;br /&gt;
Though for folks familiar with vSphere terminology, HA is not FT - Fault Tolerant which is a different take on HA to further reduce downtime from minutes to seconds. More on that in future.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/M43QTGtIweA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/5477524875381038808/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=5477524875381038808" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/5477524875381038808?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/5477524875381038808?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/M43QTGtIweA/how-does-postgresql-ha-works-in-vfabric.html" title="How does PostgreSQL HA works in vFabric Data Director?" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/10/how-does-postgresql-ha-works-in-vfabric.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AAQng7fyp7ImA9WhdbFUw.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-6345323650030781827</id><published>2011-10-13T08:14:00.001-07:00</published><updated>2011-10-13T08:29:03.607-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-13T08:29:03.607-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>Using PostgreSQL Server on Micro Cloud Foundry</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
With the recent news that &lt;a href="http://blog.cloudfoundry.com/post/11063041222/micro-cloud-foundry-tm-now-with-postgresql-and"&gt;PostgreSQL is now available in the Micro Cloud Foundry&lt;/a&gt;, I decided to take it for a test spin. I downloaded the &lt;a href="https://cloudfoundry.com/micro"&gt;Micro Cloud Foundry VM&lt;/a&gt; zip file which is about 1.0GB big. After downloading it I unzipped it on my MacBookPro and use VMware Fusion 4.0.2 to open the VM. As the VM booted up the console shows a message&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
Micro Cloud Foundry not configured&lt;/div&gt;
&lt;br /&gt;
I selected the option 1 to configure the Micro Cloud. It asked me to configure my VM user password, Networking (DHCP or Static) and then asked me to enter my Cloud Foundry configuration token which was provided to me after I had created a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pgtest.cloudfoundry.me&lt;/span&gt; domain&amp;nbsp; just before the download.&lt;br /&gt;
&lt;br /&gt;
It took about 5 minutes to setup the cloud &lt;br /&gt;
&lt;br /&gt;
After the setup: I got my micro cloud foundry setup with my local IP (looked like a bridge connection rather than NAT).&lt;br /&gt;
&lt;br /&gt;
Then I installed the VMC tool on my Mac using&amp;nbsp; (Need Ruby)&lt;br /&gt;
(NOTE: Skip directly to ssh part if you donot want to install Ruby/vmc)&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ gem install vmc&lt;/div&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ vmc target http://api.pgtest.cloudfoundry.me&lt;/div&gt;
&lt;br /&gt;
Got me connected to my micro cloud.&lt;br /&gt;
Then I did a&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ vmc register&lt;/div&gt;
to create my user account using a email id and password&lt;br /&gt;
Then I logged into the MicroCloud using&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ vmc login&lt;/div&gt;
&lt;br /&gt;
Now when I do the following I see the PostgreSQL Service available with other databases also.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ vmc services&lt;br /&gt;
&lt;br /&gt;
============== System Services ==============&lt;br /&gt;
&lt;br /&gt;
+------------+---------+---------------------------------------+&lt;br /&gt;
| Service&amp;nbsp;&amp;nbsp;&amp;nbsp; | Version | Description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
+------------+---------+---------------------------------------+&lt;br /&gt;
| mongodb&amp;nbsp;&amp;nbsp;&amp;nbsp; | 1.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MongoDB NoSQL store&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
| mysql&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 5.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MySQL database service&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
| postgresql | 9.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | PostgreSQL database service (vFabric) |&lt;br /&gt;
| rabbitmq&amp;nbsp;&amp;nbsp; | 2.4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | RabbitMQ messaging service&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
| redis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 2.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | Redis key-value store service&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br /&gt;
+------------+---------+---------------------------------------+&lt;br /&gt;
&lt;br /&gt;
=========== Provisioned Services ============&lt;br /&gt;
&lt;/div&gt;
As you can see there are no provisioned services currently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here if you are like a Java/Spring developer you want to creating an application using Xin Li's post on "&lt;a href="http://support.cloudfoundry.com/entries/20470268-postgresql-for-micro-cloud-foundry-spring-tutorial"&gt;PostgreSQL for Micro Cloud Foundry- Spring Tutorial&lt;/a&gt;".&lt;br /&gt;
&lt;br /&gt;
I am not interested in developing Java applications but I want access to the postgresql server directly.&lt;br /&gt;
&lt;br /&gt;
Now comes the ssh part. &lt;br /&gt;
&lt;br /&gt;
Currently the PostgreSQL server is not exposed externally from the Micro Cloud.&lt;br /&gt;
But on the console of Micro Cloud VM, you can configure the password of vcap user. Which means now you have ssh access to the Micro Cloud VM.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ ssh vcap@mircrocloudip&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ cd /var/vcap/store/postgresql&lt;/span&gt;&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ vi postgresql.conf&amp;nbsp;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
&lt;br /&gt;&lt;/div&gt;
and edit listen_address to add your database client ip address out there.&lt;br /&gt;
For my demo setup I just opened it to all&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
listen_addresses='*'&lt;/div&gt;
&lt;br /&gt;
Next assign a Postgres password for the "vcap" user&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
$ /var/vcap/packages/postgresql/bin/psql -d postgres&lt;br /&gt;
psql (9.0.4)&lt;br /&gt;
Type "help" for help.&lt;br /&gt;
&lt;br /&gt;
postgres=# ALTER USER vcap WITH PASSWORD 'secret';&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
ALTER ROLE&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
postgres=#\q&lt;/div&gt;
&lt;br /&gt;
Now I exit from Micro Cloud VM and using the console I restart the services.&lt;br /&gt;
Now the PostgreSQL service can be accessed from postgres client anywhere.&lt;br /&gt;
&lt;br /&gt;
For example from a Macbook Pro&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ psql -h microcloudip -d postgres -U vcap&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Password for user vcap: &lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;psql (9.0.5, server 9.0.4)&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Type "help" for help.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;postgres=# &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Try it out!&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/FcNGkKHA8gM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/6345323650030781827/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=6345323650030781827" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6345323650030781827?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6345323650030781827?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/FcNGkKHA8gM/using-postgresql-server-on-micro-cloud.html" title="Using PostgreSQL Server on Micro Cloud Foundry" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/10/using-postgresql-server-on-micro-cloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8ERnc8cSp7ImA9WhdbEE8.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-4766006766399907518</id><published>2011-10-07T12:44:00.000-07:00</published><updated>2011-10-07T14:26:47.979-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-07T14:26:47.979-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DataDirector" /><title>vFabric Data Director - All in a Box setup</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
vFabric Data Director 1.0 is available for download on the &lt;a href="http://www.vmware.com/go/download-datadirector"&gt;VMware download website&lt;/a&gt;. Generally the question we get a lot is on how to do a "small" setup for either a departmental setup or trial setup which is actually small enough to fit in a beefy workstation or a small server. Often time this helps people to evaluate the features of Data Director before doing the "standard" HA setup. Maybe it is only for tests/dev databases where one does not want to invest too much in the infrastructure setup itself..&lt;br /&gt;
&lt;br /&gt;
So here is one such way of doing a "small" setup of vFabric Data Director for test/dev/qa databases.&lt;br /&gt;
(Note: This is going to be a long blog post)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What do you need?&lt;/b&gt;&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;A beefy Workstation or departmental Server with lots of RAM and lots of Storage and atleast two network adapter (Even though only one need be connected to the departmental network)&lt;/li&gt;
&lt;li&gt;ESXi V5.0 installation CD (Software)&lt;/li&gt;
&lt;li&gt;vCenter&amp;nbsp; Virtual Appliance/Virtual Machine &lt;/li&gt;
&lt;li&gt;DHCP Server Virtual Machine&lt;/li&gt;
&lt;li&gt;vFabric Data Director Virtual Appliance Image&lt;/li&gt;
&lt;li&gt;Preferably atleast one static IP Address on your departmental network for DB Name Server or have Dynamic DNS on your departmental network&lt;/li&gt;
&lt;li&gt;License Keys - Use your VMware contacts.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;b&gt;Step I: Preparing the Workstation &lt;/b&gt;&lt;br /&gt;
On my test setup I had 12GB of RAM with 2x Quad Core x86_64 chips with 5 disks in it. Since this is my whole setup, the more memory I get, the merrier I am with the setup. It is recommended that you have some sort of Raid controller on the setup and have ability to create multiple LUN devices that will be exposed to the ESXi server. On my setup I had about one disk dedicated to ESXi and for other disks I created a RAID-5 LUN (RAID-10 is preferred but I did not have enough space on my demo setup).&amp;nbsp; If I had more Storage available I would do two setups with RAID-10 setup and a RAID-0 setup which can be used as backup datastore. The RAID preferences depends on individual needs on what to trade off (performance , availability, capacity).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step II: Installing ESXi 5.0&amp;nbsp; &lt;/b&gt;&lt;br /&gt;
Using the ESXi V5.0 installation CD, I installed ESXi&amp;nbsp; on the first logical device and eventually setup the RAID protected device as a datastore that ESXi can use.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step III: Install vCenter Virtual Machine&lt;/b&gt;&lt;br /&gt;
Here one can use the vCenter Virtual Appliance available also. On my demo setup I had used a vCenter Server based on Windows Server 2003 since that was available. Installation of vCenter Server itself can be its own blog entry and I will leave that to experts. For my purpose I had setup vCenter Server setup done in a virtual machine.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step IV: Setting up vCenter Server for our task&lt;/b&gt;&lt;br /&gt;
This is where things are bit different for this special all in a box setup. The idea of setting up is to do vFabric Data Director Appliance which includes the hardware. Hence the idea is only the management console and the databases that it deploys are exposed outside (of course the ESXi also has to be visible outside to set this up)&amp;nbsp; and all other infrastructure related things are hidden within this appliance. This is where two network adapters will come in play. Lets go first with the steps and then a bit of explanation on why do it this way.&lt;br /&gt;
I am assuming that the ESXi Server and&amp;nbsp; vCenter VM has network connected to the live network adapter.&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Connect to the vCenter through vSphere GUI or through the webclient. &lt;/li&gt;
&lt;li&gt;Create a new DataCenter.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Create a new Cluster&lt;/li&gt;
&lt;li&gt;Add the ESXi Host to this cluster&lt;/li&gt;
&lt;li&gt;Edit Settings for the Cluster to Enable&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt; vSphere HA (even though we cannot do it on a single Host)&lt;/li&gt;
&lt;li&gt;vSphere DRS &lt;/li&gt;
&lt;li&gt;"VM and Application Monitoring" in VM Monitoring&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Create a Distributed vSwitch as follows: &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Go to networking in Inventory you will see your corporate network called probably "VM Network"&lt;/li&gt;
&lt;li&gt;Add a new distributed vSwitch in the section where you have to add a physical Network Adapter, select the Network Adapter which is not plugged into the departmental network (Skip creating an automatic port group for the switch)&lt;/li&gt;
&lt;li&gt;Now for the dvSwitch created, create two port Groups "vCenter Network" and "Internal Network"&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;For the ESXi host create a vmKernel port in "vCenter Network" portgroup with a static IP address 192.168.2.2&lt;/li&gt;
&lt;li&gt;For the vCenter VM, create a new network adapter in the "vCenter Network" port group with a static IP of 192.168.2.1&lt;/li&gt;
&lt;li&gt;Change the Managed IP of vCenter Server (Administration-&amp;gt;vCenter Server Settings-&amp;gt;Runtime Settings)&amp;nbsp; to 192.169.2.1&lt;/li&gt;
&lt;li&gt;Make sure vCenter server can still access the ESXi server through the new "vCenter Network" portgroup&lt;/li&gt;
&lt;li&gt;Setup DHCP Server Appliance such that its LAN network is on "Internal Network"&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;I had setup DHCP&amp;nbsp; Server such that its own IP is 192.168.1.1 and it does DHCP on the network from range 192.168.1.5 to 192.168.1.250 (for my demo setup)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Step V: Deploy vFabric Data Director OVA Template &lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Using the vSphere Client (connected to our vCenter Server) deploy the vFabric Data Director OVA template.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The setup wizard will ask you to select the network for vCenter and the Management console. For the vCenter Network select the "vCenter Network" portgroup and for the Management Console, select the "VM Network" which is the live departmental network&lt;/li&gt;
&lt;li&gt;If your setup is like mine, I do not have access to static IP adddress in the deparmental network so I just leave the next screen at its defaults to use DHCP and finish the deployment.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
Once the deployment finishes&amp;nbsp; there will be a new vApp called VMware Data Director.&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt; Start the vAPP.&amp;nbsp; Once the vAPP starts, expand the "+" sign and select to the Management Server VM.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Select the "Summary" tab of Management Server and wait till it shows an IP address.&lt;/li&gt;
&lt;li&gt;Enter&amp;nbsp; that IP address in a browser and you should see message "This connection is untrusted" depending on your browse type, add it to your exceptions and then it should take you to License agreement screen.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Step VI: Setup vFabric Data Director&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Read and accept the License agreement to proceed.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Next create an administrator account.&lt;/li&gt;
&lt;li&gt;On the next screen since this is a small setup, I selected the Global User Management Mode&lt;/li&gt;
&lt;li&gt;Setup the Branding as required on the next screen &lt;/li&gt;
&lt;li&gt;Setup the SMTP server information if available (needed for user password resets) (You also need outgoing email id for a successful setup of SMTP )&lt;/li&gt;
&lt;li&gt;On the next screen you have to setup vCenter Network Information. Since we dont have any DHCP on our "vCenter Network" portgroup, edit Network adapter settings and select "Static" with netmask information 255.255.255.0&lt;/li&gt;
&lt;li&gt;Set static IP addresses 192.168.2.3 for Management server and 192.168.2.4 for DB Name Server&lt;/li&gt;
&lt;li&gt;On the next screen change Internal Network to select "Internal Network" portgroup and leave DB Name Server Network as the "VM Network" which is the departmental network.&lt;/li&gt;
&lt;li&gt;On the following screen, select the network settings of "Internal Network"&amp;nbsp; DHCP should be already selected. Also check Static and add the network mask as 255.255.255.0&lt;/li&gt;
&lt;li&gt;For Management Server - Internal Network adapter, select static IP address and set it to 192.168.1.3 &lt;/li&gt;
&lt;li&gt;For DB Name Server - Internal Network adapter, select static IP address and set it to 192.168.1.4&lt;/li&gt;
&lt;li&gt; &lt;i&gt;Warning&lt;/i&gt;: This next bit is where you use your one static IP address or Dynamic DNS based FQDN requirement. We still have to provide DB Name Server - DB Name Service Network Adapter. If you have any influence on your IT, get a static IP address for this one. If you get the static IP, then click the Departmental "VM Network" setup and select static IP address with the associate Gateway, netmask and DNS Server setup. Then&amp;nbsp; set the static IP address for DB Name Server - DB Name Service Network Adapter with the static IP address that you get from your IT..&lt;/li&gt;
&lt;li&gt;Next enter your Evaluation License keys for vFabric Data Director and vFabric Postgres&lt;/li&gt;
&lt;li&gt;Finally verify information on the summary page and then click Finish&lt;/li&gt;
&lt;li&gt;You should get a login screen if it sets up successfully&lt;/li&gt;
&lt;/ul&gt;
&lt;u&gt;&lt;i&gt;Note&lt;/i&gt;&lt;/u&gt;: The most tricky bit is getting the IP address from IT. If for some reasons you do not have a static IP address, fake a&amp;nbsp; fully qualified domain name for DHCP. Once setup and you get a login screen. Figure out the DHCP IP allocated to DB Name Server using vSphere Client (It is first IP address that shows in the Summary tab of DB Name Server VM). Enter using your administrator account credentials, go to "Administration" tab. Select Settings-&amp;gt; Networking setup. Select Edit Network Setup and step through the setup again and change your fakeFQDN with the DHCP IP address and press finish. Of course this is a hack and not recommended since DHCP IP addresses can change anytime if the lease is up or the system is rebooted and other network policies.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step VII: Setting Up&amp;nbsp; an Resource Bundle in vFabric Data Director&lt;/b&gt;&lt;br /&gt;
For this we need a special Resource Pool in our Virtual Data Center&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Using vSphere Client we create a resource Pool "Resource Bundle1" in the data center&lt;/li&gt;
&lt;li&gt;Edit its settings such that it has reservations and limits matching for both CPU and memory&lt;/li&gt;
&lt;li&gt;Also "Unlimited" should not be checked for both CPU and Memory.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;In my demo setup I set CPU reservations and limits to 4096MB and Memory reservations and limits to 4096 MB.&lt;/li&gt;
&lt;/ul&gt;
Enter the vFabric Management Console using your administrator credentials and go to "Manage &amp;amp; Monitor" tab.&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt; Select "Resource Bundle" and create a new resource Bundle "ResourceBundle1".&lt;/li&gt;
&lt;li&gt; If the setup is right the next screen should show you the CPU/Memory Resource Pool that we created "Resource Bundle1"&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Next select the RAID protected datastore and a size chunk off it for Database Storage. Select any alternative or the same datastore for "Backup Storage" with a sizeable chunk. In my demo I selected my Raid5 based datastore and 100GB sizes for both.&lt;/li&gt;
&lt;li&gt;Next select the "VM Network" which is my departmental network through which uses will access the database.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Click Finish to setup the Resource Bundle.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step VII: Setup an Organization in vFabric Data Director&lt;/b&gt;&lt;br /&gt;
In "Manage&amp;amp;Monitor" select Organizations and create "+" a new organization called "DataDirectorOrg".&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;On the next screen you could select an new user or in my case I used "Choose an existing user" and used my administrator account to manage the Organization also.&lt;/li&gt;
&lt;li&gt;Next I selected the resource Bundle I just created (need to select "Choose an existing Resource Bundle" to see the resource bundle)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;click Finish.&lt;/li&gt;
&lt;/ul&gt;
Once created there will be the new Org displayed. If you select it once, the link becomes active. If you then select the active link again it will open a New tab for the Organization for our next step.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step VIII: Setup a Database Group&lt;/b&gt;&lt;br /&gt;
Next we have to setup a database group.&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;In the org tab select "Manage&amp;amp;Monitor" tab to see the list of databases (which is empty).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Select the second tab "Database Groups"&amp;nbsp; to see the empty group list&lt;/li&gt;
&lt;li&gt;Create ("+" ) a new database group "DBGroup1" where I selected half of my datastore resources assigned for this group leaving the rest of the entries at default.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step IX: Create a database&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Select and enter the database group we just created.&lt;/li&gt;
&lt;li&gt;Create ("+") a new database "dbtest" with owner credentials "dba" and password.&lt;/li&gt;
&lt;li&gt;Wait till deployment of the database succeeds and "dbtest" is running.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Once running highlight it , right click to see the properties and get the UUID and Name. The client also needs the IP address of the DB Name server.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
Here is an image of the distributed vSwitch from vSphere client on my demo box.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-ob9aW4bvGus/To9t8zi5yrI/AAAAAAAAAFs/YXpLsShnA88/s1600/vDD-dvSwitchSetup.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://3.bp.blogspot.com/-ob9aW4bvGus/To9t8zi5yrI/AAAAAAAAAFs/YXpLsShnA88/s640/vDD-dvSwitchSetup.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Step X: Connect to the database from a client&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://downloads.vmware.com/d/info/application_platform/vmware_vfabric_data_director/1_0#drivers_tools"&gt;Download vPostgres Clients for your platform&lt;/a&gt;. Then using psql from the client connect to the database similar to the following example &lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
psql -h {dd9fce1e-db46-4a08-99a1-e9023b8239fe}.129.55.555.55 -d dbtest1 -U dba&lt;/div&gt;
&lt;br /&gt;
It should prompt for the dba password and now you are connected to the database and the setup is working. Check out my previous blog entry on how to &lt;a href="http://jkshah.blogspot.com/2011/09/pgwest-2011-using-vfabric-postgres-db.html"&gt;use vPostgres Clients&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Finally now the setup of vFabric Data Director all in a box setup is working and tested.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/Q8EqbFwNKIw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/4766006766399907518/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=4766006766399907518" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/4766006766399907518?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/4766006766399907518?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/Q8EqbFwNKIw/vfabric-data-director-all-in-box-setup.html" title="vFabric Data Director - All in a Box setup" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ob9aW4bvGus/To9t8zi5yrI/AAAAAAAAAFs/YXpLsShnA88/s72-c/vDD-dvSwitchSetup.jpg" height="72" width="72" /><thr:total>2</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/10/vfabric-data-director-all-in-box-setup.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MCRHwzeSp7ImA9WhdUE08.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-3387773758501610762</id><published>2011-09-29T13:51:00.000-07:00</published><updated>2011-09-29T13:51:05.281-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-29T13:51:05.281-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>#PGWest 2011 -   Using vFabric Postgres - A DB User's Perspective</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Here are my slides from my #PGWest 2011 Presentation " Using vFabric Postgres - A DB User's Perspective" for vPostgres Databases as&amp;nbsp; deployed by vFabric Data Director. &lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="506" scrolling="no" src="http://app.sliderocket.com:80/app/fullplayer.aspx?id=03E8FDE2-3758-CB65-FB9A-8C60D5D96504" width="640"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/vU2j4dovBC4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/3387773758501610762/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=3387773758501610762" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3387773758501610762?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3387773758501610762?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/vU2j4dovBC4/pgwest-2011-using-vfabric-postgres-db.html" title="#PGWest 2011 -   Using vFabric Postgres - A DB User's Perspective" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/09/pgwest-2011-using-vfabric-postgres-db.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcESXw6eyp7ImA9WhdVE0s.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-6376568024340826917</id><published>2011-09-18T09:22:00.003-07:00</published><updated>2011-09-18T09:23:28.213-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T09:23:28.213-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VMware" /><title>Next Stop: #PgWest 2011 - San Jose</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Returned back from a great #pgopen in Chicago. It was nice to also see and meet again&amp;nbsp;senior VMware executives, PostgreSQL community members and lot of folks (aka customers or potential customers )&amp;nbsp;who use&amp;nbsp;PostgreSQL as&amp;nbsp;key databases in their&amp;nbsp;IT setup&amp;nbsp;&amp;nbsp;in the conference. &lt;br /&gt;
&lt;br /&gt;
Next stop now is #PgWest 2011 in San Jose starting on Septeber 27,2011.&amp;nbsp;This year again #PgWest is in San Jose, California.&lt;br /&gt;
&lt;br /&gt;
At this conference, I am presenting my first ever "&lt;a href="http://pgwest2011.sched.org/event/6ba83683a7284e72d8f6c7ae70bc24f2"&gt;Using vPostgres - A DB User perspective&lt;/a&gt;". The gist of this presentation is on how to use the vFabric Postgres client with the vFabric Postgres server deployed by vFabric Data Director. There are some small differences on how the client works compared to community PostgreSQL&amp;nbsp; and we will go over those in the session on exactly how it works, and see on how you use it for running and developing your own applications with it.&lt;br /&gt;
&lt;br /&gt;
Also Alex Mirgorodskiy, VMware&amp;nbsp;will be first time presenting in a PostgreSQL conference (that I am aware of at this point of time) on "&lt;a href="http://pgwest2011.sched.org/event/2c071cc144a3224465d968ff5efc4e2e"&gt;vFabric Postgres Database Internals&lt;/a&gt;".&amp;nbsp; In this session Alex will go over the subtle tansparent changes which makes vFabric Postgres so easy to deploy, manage and perform&amp;nbsp;in the vFabric Data Director world. Not to steal his thunder but this will cover the new Elastic Database Memory in detail. &lt;br /&gt;
&lt;br /&gt;
Bill Hodak, VMware&amp;nbsp;will present&amp;nbsp; about&amp;nbsp; &lt;a href="http://pgwest2011.sched.org/event/b4e660ac3c0b434c63a49b0abdc85b1c"&gt;vFabric Data Director&lt;/a&gt; itself on how it leverages the features of PostgreSQL and provide a management framework over it to provide enterprise framework and provide self-service features making it easy for even folks who donot know a lot about PostgreSQL database itself to deploy, tune, monitor, backup, restore, clone the database instances. &lt;br /&gt;
&lt;br /&gt;
And to give an overview of VMware's commitment to PostgreSQL Community, Charles Fan, Sr.VP - VMware R&amp;amp;D will be presenting the&lt;a href="http://pgwest2011.sched.org/event/4c76134980a75cab38427b6368bdf304"&gt; keynote at #PgWest&lt;/a&gt; 2011.&lt;br /&gt;
&lt;br /&gt;
Overall pretty excited about the conference and &amp;nbsp;to meet lot of new people&amp;nbsp;in the bay area.&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/gDEwjH3QZNo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/6376568024340826917/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=6376568024340826917" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6376568024340826917?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6376568024340826917?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/gDEwjH3QZNo/next-stop-pgwest-2011-san-jose.html" title="Next Stop: #PgWest 2011 - San Jose" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/09/next-stop-pgwest-2011-san-jose.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYMRHg-eCp7ImA9WhdVEU8.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-6306735607110869582</id><published>2011-09-15T14:44:00.000-07:00</published><updated>2011-09-15T14:46:25.650-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T14:46:25.650-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>Running PostgreSQL on Virtual Environments - #pgopen 2011</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Slides from my presentation&amp;nbsp; at Postgres Open 2011 (#pgopen11) in Chicago.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="506" scrolling="no" src="http://app.sliderocket.com:80/app/fullplayer.aspx?id=6cd18c4b-dfd3-4ec8-aa98-bf5616fc451a" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/vP_Vg2JadFY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/6306735607110869582/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=6306735607110869582" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6306735607110869582?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6306735607110869582?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/vP_Vg2JadFY/running-postgresql-on-virtual.html" title="Running PostgreSQL on Virtual Environments - #pgopen 2011" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/09/running-postgresql-on-virtual.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YMSHw-eCp7ImA9WhdWGU8.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-1159629644880364127</id><published>2011-09-13T07:46:00.001-07:00</published><updated>2011-09-13T07:46:29.250-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-13T07:46:29.250-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>Next Stop: Postgres Open 2011 - Chicago</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
Soon I will be in Chicago for Postgres Open 2011. Here I will be presenting once again&amp;nbsp; &lt;br /&gt;
"&lt;a href="http://www.postgresopen.org/2011/schedule/presentations/44/"&gt;Running PostgreSQL on Virtualized Environments&lt;/a&gt;"&amp;nbsp; on Thurday - 11:30am in the Cotillion Ballroom (according to the &lt;a href="http://www.postgresopen.org/2011/schedule/"&gt;current schedule&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
The title should really be "Running Community PostgreSQL on Virtualized Environments" since this presentation really applies to the experiences of running community PostgreSQL in Virtual Machines.&amp;nbsp; Most of the things in the presentation should really be a checklist which helps you get the most of PostgreSQL in VMs. Of course depending on the VM and the underlying infrastructure, your mileage may vary.&lt;br /&gt;
&lt;br /&gt;
Overall I am also looking forward to attend other sessions (besides mine of course) . &lt;a href="http://www.postgresopen.org/2011/speaker/profile/3/"&gt;Greg Smith&lt;/a&gt; has couple of sessions which sounds interesting. There is &lt;a href="http://www.postgresopen.org/2011/schedule/presentations/1/"&gt;key note by&amp;nbsp; Charles Fan&lt;/a&gt; on Friday&amp;nbsp; (that should be no brainer for me). Probably the most interesting to me is "&lt;a href="http://www.postgresopen.org/2011/schedule/presentations/39/"&gt;Unlocking the Postgres Lock Manager&lt;/a&gt;" by Bruce Momjian which definitely is in line of my interest (since I try to control/avoid/reduce lock contentions and LWLocks in benchmarks which actually lead to my past presentation in pgcon on "&lt;a href="http://jkshah.blogspot.com/2011/05/understanding-postgresql-lwlocks-pgcon.html"&gt;Understanding Postgres LWLocks&lt;/a&gt;").&lt;br /&gt;
&lt;br /&gt;
Definitely looking forward for the trip. &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/_OR6HE05qv4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/1159629644880364127/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=1159629644880364127" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/1159629644880364127?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/1159629644880364127?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/_OR6HE05qv4/next-stop-postgres-open-2011-chicago.html" title="Next Stop: Postgres Open 2011 - Chicago" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/09/next-stop-postgres-open-2011-chicago.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEMRng7fCp7ImA9WhdXFk8.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-8491836742844276753</id><published>2011-08-29T05:22:00.002-07:00</published><updated>2011-08-29T05:24:47.604-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-29T05:24:47.604-07:00</app:edited><title>VMware vFabric Data Director, VMware vFabric Postgres and CloudFoundry</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Today I am finally pleased to see that we are finally moving out of stealth mode. &lt;br /&gt;
&lt;br /&gt;
VMware announced vFabric Data Director at VMworld 2011 along with vFabric Postgres (vPostgres).&amp;nbsp; You will find lot of information already in the&lt;a href="http://www.vmware.com/company/news/releases/vmw-vfabric-data-director-vmworld-082911.html"&gt; press release&lt;/a&gt;. &lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
VMware vFabric Data Director&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.blogger.com/goog_430509378"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.vmware.com/products/datacenter-virtualization/vfabric-data-director/"&gt;vFabric Data Director&lt;/a&gt; is a new VMware software product that enables enterprises to offer Database-as-a-Service. vPostgres is the the first database supported on vFabric Data Director. &lt;br /&gt;
It is&amp;nbsp; a self-service product which&amp;nbsp; takes the repetitive tasks of setting up a database right from virtual bare-metal to a fully running databases in minutes with features that you expect with an Enterprise quality database (deploying, monitoring, backup, restore, resizing, cloning and many other features). It helps to reduce the database sprawl and increases DBA productivity to handle large number of databases. It extends the vSphere platform to now include a data tier.&lt;br /&gt;
&lt;br /&gt;
You can find the product document, a product-demo and other information on the &lt;a href="http://www.vmware.com/products/datacenter-virtualization/vfabric-data-director/resources.html"&gt;resource page of&amp;nbsp; vFabric Data Director&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;VMware vFabric Postgres (vPostgres)&lt;/b&gt;&lt;br /&gt;
&lt;a href="http://www.blogger.com/goog_430509387"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.vmware.com/products/datacenter-virtualization/vfabric-data-director/features.html"&gt;vFabric Postgres&lt;/a&gt; is VMware's version of PostgreSQL. vPostgres is optimized for running on vSphere platforms. It is based on PostgreSQL 9.0. However there are some transparent changes which are significant in overall user experience.&amp;nbsp; Lets go over few of these key features&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;&lt;li&gt;vFabric Postgres Elastic Database Memory: vPostgres Elastic database memory allows dynamic and seamless adaption of bufferpool in response to changing workloads on the hypervisor.&amp;nbsp; In traditional implementation, if you take out memory, the guest VMs&amp;nbsp; performance will goes down the drain. Most cloud users will have seen the symptoms for sure.&amp;nbsp; With vPostgres Elastic database memory , the effective bufferpool shrinks based on memory pressure dynamically and allows the overall system to be more graceful to this changing memory pressures.&amp;nbsp; This feature reduces the&amp;nbsp;&amp;nbsp; over-the-cliff drop in performance observed frequently in Cloud deployments of&amp;nbsp; databases.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Dynamic Checkpoint Tuning: In vPostgres, the priority is given to checkpoint_timeout which is referred to as Recovery Time Objective. In order to do the right balance between this Recovery Time Objective and overall performance, it dynamically shifts checkpoint_segments to keep a fine balance of adherence to RTO, performance and diskspace for WAL Logs. This allows reduction of manual tuning of checkpoints and allow the database server to dynamically find an optimum point based on changing workload.&lt;/li&gt;
&lt;/ul&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;vPostgres also has some specific features when used with vFabric Data Director. vFabric&amp;nbsp; Data Director allows to change resources (vCPU, memory) set for a particular database. vData Director can then auto-tune the database based on the changed resources minimizing significantly the time to re-tune database. This allows DBAs to focus on more "business goal related tasks rather than day-to-day maintenance tasks.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Currently vPostgres will be only available for download as part of&amp;nbsp; vFabric Data Director. However there is a vPostgres Service available on &lt;a href="http://www.cloudfoundry.com/"&gt;CloudFoundry.com&lt;/a&gt; for Cloud Applications. It is free for use by all applications that support the Cloud Application programming which includes Java, Ruby, node.js&amp;nbsp; in CloudFoundry.com.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ vmc services&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;============== System Services ==============&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------------+---------+-------------------------------+&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| Service&amp;nbsp;&amp;nbsp;&amp;nbsp; | Version | Description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------------+---------+-------------------------------+&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| mongodb&amp;nbsp;&amp;nbsp;&amp;nbsp; | 1.8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MongoDB NoSQL store&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| mysql&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 5.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | MySQL database service&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| postgresql | 9.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | PostgreSQL database service&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| rabbitmq&amp;nbsp;&amp;nbsp; | 2.4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | RabbitMQ messaging service&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| redis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 2.2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | Redis key-value store service |&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+&lt;/span&gt;------------+---------+-------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
During a cloud deployment, you could select the "postgresql" service for your application.&lt;br /&gt;
More on CloudFoundry services&amp;nbsp; in a subsequent blog posts.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/Gw5XI69tHxI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/8491836742844276753/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=8491836742844276753" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/8491836742844276753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/8491836742844276753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/Gw5XI69tHxI/vmware-vfabric-data-director-vfabric.html" title="VMware vFabric Data Director, VMware vFabric Postgres and CloudFoundry" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/08/vmware-vfabric-data-director-vfabric.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IGSXY9cSp7ImA9WhdXFE4.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-3187519098656046301</id><published>2011-08-27T00:52:00.000-07:00</published><updated>2011-08-27T00:52:08.869-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-27T00:52:08.869-07:00</app:edited><title>VMworld 2011 - Las Vegas</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Arrived in Las Vegas early in the middle of the night for VMworld 2011 before Hurricane Irene hits the north east coast. In last few years,&amp;nbsp; this will be my first out of state conference which is not completely dedicated to PostgreSQL that I am attending. I am part of the &lt;a href="http://www.vmworld.com/blogs/vmworld/2011/08/23/dont-miss-hands-on-labs"&gt;Hands On Labs at VMworld&lt;/a&gt; which I heard are pretty popular in VMworld.&amp;nbsp; For database lovers I would recommend the&lt;br /&gt;
&lt;table border="0" cellpadding="3" cellspacing="0" class="catalogTable"&gt;&lt;tbody&gt;
&lt;tr class="headerRow_default labs"&gt;&lt;/tr&gt;
&lt;tr class="headerRow_default labs"&gt;&lt;th colspan="6"&gt; 							&lt;div class="sessionTitle"&gt;&lt;span class="sessionAbbr"&gt;#HOL12&lt;/span&gt;&amp;nbsp;Optimizing Data Access for Your Cloud Infrastructure &lt;/div&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;It will be pretty interesting.&amp;nbsp; Also there are many other&lt;a href="https://vmworld2011.wingateweb.com/scheduler/newCatalog.do"&gt; Performance tuning sessions &lt;/a&gt;which will be also very interesting. &lt;br /&gt;
&lt;br /&gt;
Also there are many sessions available which may be difficult to short list. One of the things that is different from my other conferences that I attend is that one has to pre-register for the HOL or any sessions that one wants to attend otherwise they are denied entry to that session.&amp;nbsp; That is way difference and I still havent got around to figure out how the whole schedule builder works myself. So I would advice some extra time to make sure you can select your favorite sessions before they fill up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/DsuHpkRWesg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/3187519098656046301/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=3187519098656046301" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3187519098656046301?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3187519098656046301?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/DsuHpkRWesg/vmworld-2011-las-vegas.html" title="VMworld 2011 - Las Vegas" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/08/vmworld-2011-las-vegas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYHR3c4eyp7ImA9WhdWFU0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-6158377419739278548</id><published>2011-05-20T08:08:00.002-07:00</published><updated>2011-09-08T11:55:36.933-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T11:55:36.933-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>Understanding PostgreSQL LWLocks - PGCon 2011</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;
From PGCon 2011 here are my slides on "Understanding PostgreSQL LWLocks"&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="401" scrolling="no" src="http://app.sliderocket.com:80/app/fullplayer.aspx?id=37d4ee14-d151-4435-8f71-faff31f507c1" width="500"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Or alternatively at the &lt;a href="http://portal.sliderocket.com/AQXFX/PgCon2011_LWLocks"&gt;direct link&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/pPIL8cU5ieQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/6158377419739278548/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=6158377419739278548" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6158377419739278548?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6158377419739278548?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/pPIL8cU5ieQ/understanding-postgresql-lwlocks-pgcon.html" title="Understanding PostgreSQL LWLocks - PGCon 2011" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/05/understanding-postgresql-lwlocks-pgcon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQnoyfyp7ImA9WhdWFU0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-8191430953905672145</id><published>2011-03-24T07:12:00.000-07:00</published><updated>2011-09-08T11:58:53.497-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T11:58:53.497-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>Running Postgres in Virtualized Environment - #pgeast 2011</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Slides from today's presentation at PGEast.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://sites.google.com/site/pgmonitor/PgEast2011-VirtEnv.pdf"&gt;&lt;img border="0" height="240" src="https://lh3.googleusercontent.com/-7U4ldp8BQ7E/TYtQ7SDyz9I/AAAAAAAAADk/MtGVtdaPo0Y/s320/PgEast2011-VirtEnv.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
As usual feedback, questions welcome. &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/0WaKpitJ8nA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/8191430953905672145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=8191430953905672145" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/8191430953905672145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/8191430953905672145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/0WaKpitJ8nA/running-postgres-in-virtualized.html" title="Running Postgres in Virtualized Environment - #pgeast 2011" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/-7U4ldp8BQ7E/TYtQ7SDyz9I/AAAAAAAAADk/MtGVtdaPo0Y/s72-c/PgEast2011-VirtEnv.jpg" height="72" width="72" /><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/03/running-postgres-in-virtualized.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQnoycCp7ImA9WhdWFU0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-3533920291007785987</id><published>2011-03-23T14:48:00.000-07:00</published><updated>2011-09-08T11:58:53.498-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T11:58:53.498-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>Introduction to PostgreSQL for System Administrators - #pgeast 2011</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Here are the slides from my presentation today at PGEast 2011.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://sites.google.com/site/pgmonitor/PgEast2011-IntroPGSA.pdf"&gt;&lt;img border="0" height="240" src="https://lh5.googleusercontent.com/-kIwqQRyOFQo/TYpo2ApSKpI/AAAAAAAAADU/NhVfmZfsx5M/s320/PgEast2011-IntroPGSA.jpg" width="320" /&gt; &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
It turned out to be a fast faced presentation for 45 minutes. Online feedback, questions are welcome as usual.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Update: Also my next presentation "PostgreSQL in Virtualized Environments" has moved to tomorrow (Thurday) at 9:00am in the Boardroom for the early bird attendees :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/31Q_Cbiiy-g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/3533920291007785987/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=3533920291007785987" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3533920291007785987?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/3533920291007785987?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/31Q_Cbiiy-g/introduction-to-postgresql-for-system.html" title="Introduction to PostgreSQL for System Administrators - #pgeast 2011" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh5.googleusercontent.com/-kIwqQRyOFQo/TYpo2ApSKpI/AAAAAAAAADU/NhVfmZfsx5M/s72-c/PgEast2011-IntroPGSA.jpg" height="72" width="72" /><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/03/introduction-to-postgresql-for-system.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQnoycCp7ImA9WhdWFU0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-6296803114040220112</id><published>2011-03-16T07:45:00.000-07:00</published><updated>2011-09-08T11:58:53.498-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T11:58:53.498-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>PgEast 2011 - New York</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Its less than week for&lt;a href="https://www.postgresqlconference.org/2011/east/agenda"&gt; PgEast 2011&lt;/a&gt;&amp;nbsp; and this time I have two sessions out there.&lt;br /&gt;
&lt;br /&gt;
My first session is on &lt;a href="https://www.postgresqlconference.org/files/east_2011_schedule.html"&gt;Wednesday at 3:00pm&lt;/a&gt; titled "&lt;a href="https://www.postgresqlconference.org/content/introduction-postgresql-system-administrators"&gt;Introduction to PostgreSQL for System Administrators&lt;/a&gt;" . This session is not about learning SQL or any real database feature but it is meant for system administrators to get their first exposure to PostgreSQL as an application running on their systems. We look at basic installation and some internals on understanding the various processes running on the system and understanding them.&lt;br /&gt;
&lt;br /&gt;
My session session is on &lt;a href="http://www.blogger.com/"&gt;Friday at 10:05am&lt;/a&gt; titled "&lt;a href="https://www.postgresqlconference.org/content/running-postgres-virtualized-environments"&gt;Running Postgres on Virtualized Environments&lt;/a&gt;". This session is about running Postgres in VM using VMware's vSphere. Many of the content while specific to vSphere can be used to understand in general when running Postgres on any virtual platform.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
With the increase in adoption of "Cloud Computing"&amp;nbsp; in various industries, I expect the usage of Postgres on VMs to increase dramatically in next few years. PgEast 2011 has a roundtable discussion with a panel of experts on Thursday at 2:30pm to precisely answer questions about deploying PostgreSQL in the cloud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/WYfxjqnfgh8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/6296803114040220112/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=6296803114040220112" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6296803114040220112?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/6296803114040220112?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/WYfxjqnfgh8/pgeast-2011-new-york.html" title="PgEast 2011 - New York" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2011/03/pgeast-2011-new-york.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQnoycCp7ImA9WhdWFU0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-7318592424956581374</id><published>2010-11-21T22:50:00.000-08:00</published><updated>2011-09-08T11:58:53.498-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T11:58:53.498-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>PostgreSQL 9.0 Simple Select Scaling using sysbench</title><content type="html">While I still haven't found a working way to test sysbench read-write test, I decided to continue on sysbench testing with PostgreSQL 9.0. This time I selected the oltp-test-mode=simple which essentially does a select lookup based on a primary key. The basic idea is to see if you are only doing a select statement how far can you scale.&lt;br /&gt;
&lt;br /&gt;
Here are my initial results with PostgreSQL 9.0&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/__9VTPFYIKns/TObu2eaDy5I/AAAAAAAAACw/w9GtPtI9VA8/s1600/PG9SimpleScaling.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/__9VTPFYIKns/TObu2eaDy5I/AAAAAAAAACw/w9GtPtI9VA8/s1600/PG9SimpleScaling.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
This is still work in progress in some ways since this test has never been done before with PostgreSQL 9.0 (or atleast I haven't seen any body publish anything around this before).&lt;br /&gt;
&lt;br /&gt;
Anyway my real goal is not to just put the numbers here but to understand what is happening here. Round about 40-48 clients we seen to peak out on scaling and hit a wall as far as scaling goes. The statement is pretty simple select from sbtest with a primary key which is randomly generated.&lt;br /&gt;
&lt;br /&gt;
This is where I miss dtrace and OpenSolaris. Now that I am working on Linux it thought of trying it out with systemtap. The setting up of a working systemtap itself was a big challenge and took me some time to make it to work on my existing kernel. (Boy Linux should get their act straight at user level tracing. Its not omnipresent as dtrace on Solaris).&lt;br /&gt;
&lt;br /&gt;
I converted my old lockstat utility to work on systemtap. The script seems to work but systemtap can act funny sometimes like dont abruptly exit from systemtap&amp;nbsp; otherwise it may send a "wrong" signal to postgres backend which then just commits suicide since it cannot figure out what to do with such "trace/debug" signal.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCKNAME LWID M W/A COUNT SUM-TIME(us) MAX(us) AVG-TIME(us)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 45 Ex W &amp;nbsp; 85343 469682510 13152 5503&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 57 Ex W&amp;nbsp;&amp;nbsp; 57547&amp;nbsp; 30903727&amp;nbsp; 8313&amp;nbsp; 537&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 44 Ex W &amp;nbsp; &amp;nbsp; 390 &amp;nbsp; &amp;nbsp; 34061&amp;nbsp; 1670&amp;nbsp;&amp;nbsp; 87&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 59 Ex W &amp;nbsp;&amp;nbsp;&amp;nbsp; 375&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 41570&amp;nbsp; 2032&amp;nbsp; 110&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 56 Ex W &amp;nbsp; &amp;nbsp; 361&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 39685&amp;nbsp; 1889&amp;nbsp; 109&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 47 Ex W &amp;nbsp; &amp;nbsp; 344&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24548&amp;nbsp; 1564&amp;nbsp;&amp;nbsp; 71&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 54 Ex W &amp;nbsp; &amp;nbsp; 335 &amp;nbsp; &amp;nbsp; 67770&amp;nbsp; 2319&amp;nbsp; 202&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 50 Ex W &amp;nbsp; &amp;nbsp; 325 &amp;nbsp; &amp;nbsp; 44213&amp;nbsp; 1690&amp;nbsp; 136&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 49 Ex W &amp;nbsp; &amp;nbsp; 325&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 39280&amp;nbsp; 1475&amp;nbsp; 120&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 55 Ex W &amp;nbsp; &amp;nbsp; 323&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 39448&amp;nbsp; 1584&amp;nbsp; 122&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LockMgrLock 48 Ex W &amp;nbsp; &amp;nbsp; 323&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26982&amp;nbsp; 1669&amp;nbsp;&amp;nbsp; 83&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
What you see above is top WAITS on lwlocks by count and what was the average wait and max wait time for a particular LWLock.&lt;br /&gt;
&lt;br /&gt;
(Thinking it might be related to NUM_LOCK_PARTITIONS, I did some experiments with different sizes but since they are all related to the same table it does not help here.)&lt;br /&gt;
&lt;br /&gt;
Then I modified my lockstat script slightly to do stack straces for those two locks:&lt;br /&gt;
&lt;br /&gt;
Majority of those were pretty much caused by the same code path:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="font-size: small;"&gt;Lock id:45, LockMode:0&lt;br /&gt;
&amp;nbsp;0x000000000062412e : LWLockAcquire+0x25e/0x270 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x00000000006228cc : LockAcquireExtended+0x2dc/0xa40 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x0000000000620788 : LockRelationOid+0x48/0x60 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000064be85 : AcquireExecutorLocks+0xd5/0x190 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000064c96a : RevalidateCachedPlan+0x5a/0x3b0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000062ee64 : exec_bind_message+0x604/0xab0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x0000000000630bbd : PostgresMain+0x82d/0x16e0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x00000000005f302e : ServerLoop+0x96e/0xcb0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x00000000005f3dec : PostmasterMain+0xa7c/0x1150 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000044e4f0 : main+0x370/0x430 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&lt;br /&gt;
Lock id:57, LockMode:0&lt;br /&gt;
&amp;nbsp;0x000000000062412e : LWLockAcquire+0x25e/0x270 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x00000000006228cc : LockAcquireExtended+0x2dc/0xa40 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x0000000000620788 : LockRelationOid+0x48/0x60 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x0000000000477425 : relation_open+0x55/0x90 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000047e5e3 : index_open+0x13/0x90 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x00000000005732a5 : ExecInitIndexScan+0x125/0x1e0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x0000000000560275 : ExecInitNode+0x135/0x290 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000055ed80 : standard_ExecutorStart+0x530/0xc70 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000063278b : PortalStart+0x1bb/0x380 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000062ee9c : exec_bind_message+0x63c/0xab0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x0000000000630bbd : PostgresMain+0x82d/0x16e0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x00000000005f302e : ServerLoop+0x96e/0xcb0 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x00000000005f3dec : PostmasterMain+0xa7c/0x1150 [/usr/local/aurora-1.0/bin/postgres]&lt;br /&gt;
&amp;nbsp;0x000000000044e4f0 : main+0x370/0x430 [/usr/local/aurora-1.0/bin/postgres]&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
So what I understand is that we have two problems here:&lt;br /&gt;
1. RevalidateCachedPlan (the Major bottleneck)&lt;br /&gt;
2. AccessShare Lock entry (the second bottleneck)&lt;br /&gt;
&lt;br /&gt;
Well atleast now I know the area where there seems to be some scaling bottlenecks which can limit simple SELECT statement scalings. The question now is what to do about them. Back to the mailing list.&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/LTmVPe5Lyrg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/7318592424956581374/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=7318592424956581374" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/7318592424956581374?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/7318592424956581374?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/LTmVPe5Lyrg/postgresql-90-simple-select-scaling.html" title="PostgreSQL 9.0 Simple Select Scaling using sysbench" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/__9VTPFYIKns/TObu2eaDy5I/AAAAAAAAACw/w9GtPtI9VA8/s72-c/PG9SimpleScaling.jpg" height="72" width="72" /><thr:total>1</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2010/11/postgresql-90-simple-select-scaling.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQnoycSp7ImA9WhdWFU0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-7904781470494142128</id><published>2010-11-18T12:00:00.000-08:00</published><updated>2011-09-08T11:58:53.499-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T11:58:53.499-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>sysbench, PostgreSQL 9.0 and OLTP complex read-write test</title><content type="html">Continuing with my sysbench saga with PostgreSQL 9.0, I was generally not encountering any errors except recently. I found two differences on how I did execute this test in order to hit this problem. One is I used a relatively small number of rows (1 million) which forces the special distribution of sysbench clients to be smaller and a reasonably high number of threads (80) as follows&lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sysbench --db-driver=pgsql --oltp-dist-type=special --oltp-table-size=1000000 --oltp-read-only=off --oltp-test-mode=complex --max-requests=0 --max-time=300 --num-threads=64 --test=oltp run&lt;/div&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sysbench 0.4.12:&amp;nbsp; multi-threaded system evaluation benchmark&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Running the test with following options:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Number of threads: 80&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Doing OLTP test.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Running mixed OLTP test&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Using Special distribution (12 iterations,&amp;nbsp; 1 pct of values are returned in 75 pct cases)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Using "BEGIN" for starting transactions&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Using auto_inc on the id column&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Threads started!&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FATAL: query execution failed: 9490352&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FATAL: database error, exiting...&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Done.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And the test failed with error reported in pg_log:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ERROR:&amp;nbsp; duplicate key value violates unique constraint "sbtest_pkey"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DETAIL:&amp;nbsp; Key (id)=(500815) already exists.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;STATEMENT:&amp;nbsp; INSERT INTO sbtest values($1,0,' ','aaaaaaaaaaffffffffffrrrrrrrrrreeeeeeeeeeyyyyyyyyyy')&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br /&gt;
&lt;br /&gt;
The way sysbench works for the complex read-write test transaction, after doing some bunch of selects and updates, it deletes a row and inserts the same row back. So in a transaction logic it should not hit this error since it just deleted the row. This took me some time to recreate it in a way that I could understand what is happening.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
What's happening is the timing of the start of a query in transaction with respect to another transaction in flight &lt;br /&gt;
working with the same key-value row such that the other transaction just deleted the row and also inserted the same row back in the same transaction.&lt;br /&gt;
&lt;br /&gt;
Lets consider two transactions A and B&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Transaction A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: purple;"&gt;Transaction B&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BEGIN;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: purple;"&gt;BEGIN;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DELETE FROM sbtest WHERE id=500815;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(returns DELETE 1)&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;INSERT INTO sbtest values(500815,0,'','aaaaaaaaaaffffffffffrrrrrrrrrreeeeeeeeeeyyyyyyyyyy');&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(returns INSERT 0 1)&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: purple;"&gt;DELETE FROM sbtest WHERE id=500815;&amp;lt; ------- hangs/waits&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;END;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(COMMIT)&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: purple;"&gt;(returns DELETE 0 – returns success but doesn’t delete any rows . It doesn't roll back the transaction)&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: purple;"&gt;INSERT INTO sbtest values(500815,0,'','aaaaaaaaaaffffffffffrrrrrrrrrreeeeeeeeeeyyyyyyyyyy');&lt;/span&gt;&lt;/div&gt;&lt;div style="color: purple; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ERROR: duplicate key value violates unique constraint "sbtest_pkey"&lt;/div&gt;&lt;div style="color: purple; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;/div&gt;&lt;div style="color: purple; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ROLLBACK)&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;br /&gt;
&lt;/div&gt;The way MySQL-InnoDB handles it is slightly different. It actually deletes the new row inserted and hence always can do the INSERT successfully and thats why sysbench with MySQL - InnoDB never showed that problem.&lt;br /&gt;
&lt;br /&gt;
If you read the &lt;a href="http://www.postgresql.org/docs/9.0/static/transaction-iso.html"&gt;documentation on PostgreSQL&lt;/a&gt; for READ COMMITTED Isolation level, it says: "In effect, a &lt;tt class="COMMAND"&gt;SELECT&lt;/tt&gt; query sees     a snapshot  of the database as of the instant the query begins to     run". So had the DELETE actually started after the END of the first transaction it would delete the new INSERTed row.I am not sure how other databases (ORACLE, DB2, etc) behave in this scenario.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
As one of my co-worker mentioned "Correctness is in the Implementation of Beholder", it is hard to say who is right or wrong..&lt;br /&gt;
&lt;br /&gt;
Just another one of the minor differences between MySQL and PostgreSQL.&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/4-pWTCxH4rM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/7904781470494142128/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=7904781470494142128" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/7904781470494142128?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/7904781470494142128?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/4-pWTCxH4rM/sysbench-postgresql-90-and-oltp-complex.html" title="sysbench, PostgreSQL 9.0 and OLTP complex read-write test" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><thr:total>7</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2010/11/sysbench-postgresql-90-and-oltp-complex.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQnoycSp7ImA9WhdWFU0.&quot;"><id>tag:blogger.com,1999:blog-17085626.post-7213717474780726559</id><published>2010-11-03T14:18:00.001-07:00</published><updated>2011-09-08T11:58:53.499-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T11:58:53.499-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="postgresql" /><title>PostgreSQL in Virtual Environment - PGWest 2010</title><content type="html">Yesterday I had my presentation at PgWest 2010 at San Francisco.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://sites.google.com/site/pgmonitor/PGWest-VirtEnv.pdf"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/__9VTPFYIKns/TNHPYlp8vkI/AAAAAAAAACs/OiXdj7bupEE/s320/PGWest-VirtEnv-title.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
If you have questions on the presentation please feel free to leave comments.&lt;img src="http://feeds.feedburner.com/~r/JigneshShahsBlog/~4/I0mF5WHUdLY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://jkshah.blogspot.com/feeds/7213717474780726559/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=17085626&amp;postID=7213717474780726559" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/7213717474780726559?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17085626/posts/default/7213717474780726559?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JigneshShahsBlog/~3/I0mF5WHUdLY/postgresql-in-virtual-environment.html" title="PostgreSQL in Virtual Environment - PGWest 2010" /><author><name>Jignesh Shah</name><uri>https://plus.google.com/107657423935937111113</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-0OfovQqFqZ0/AAAAAAAAAAI/AAAAAAAAAAA/7u4Ddq5wkC8/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/__9VTPFYIKns/TNHPYlp8vkI/AAAAAAAAACs/OiXdj7bupEE/s72-c/PGWest-VirtEnv-title.jpg" height="72" width="72" /><thr:total>0</thr:total><gd:extendedProperty name="commentSource" value="1" /><gd:extendedProperty name="commentModerationMode" value="FILTERED_POSTMOD" /><feedburner:origLink>http://jkshah.blogspot.com/2010/11/postgresql-in-virtual-environment.html</feedburner:origLink></entry></feed>
