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

<channel>
	<title>FSM &#8211; Database Research &amp; Development</title>
	<atom:link href="https://www.dbrnd.com/tag/fsm/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbrnd.com</link>
	<description>BIGData &#124; NoSQL &#124; MSSQL &#124; MySQL &#124; PostgreSQL</description>
	<lastBuildDate>Mon, 11 Dec 2017 13:02:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.6</generator>
	<item>
		<title>PostgreSQL: Check the progress of running VACUUM</title>
		<link>https://www.dbrnd.com/2017/12/postgresql-check-the-progress-of-running-vacuum/</link>
					<comments>https://www.dbrnd.com/2017/12/postgresql-check-the-progress-of-running-vacuum/#comments</comments>
		
		<dc:creator><![CDATA[Anvesh Patel]]></dc:creator>
		<pubDate>Sat, 23 Dec 2017 16:16:40 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Anvesh Patel]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database research and development]]></category>
		<category><![CDATA[dbrnd]]></category>
		<category><![CDATA[FSM]]></category>
		<category><![CDATA[Monitor Vacuum]]></category>
		<category><![CDATA[MVCC]]></category>
		<category><![CDATA[plpgsql]]></category>
		<category><![CDATA[Postgres Query]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[PostgreSQL Administrator]]></category>
		<category><![CDATA[PostgreSQL Error]]></category>
		<category><![CDATA[PostgreSQL Monitoring]]></category>
		<category><![CDATA[PostgreSQL Performance Tuning]]></category>
		<category><![CDATA[PostgreSQL Programming]]></category>
		<category><![CDATA[PostgreSQL Tips and Tricks]]></category>
		<category><![CDATA[Running Vacuum]]></category>
		<category><![CDATA[VACUUM]]></category>
		<category><![CDATA[VACUUM Progress]]></category>
		<guid isPermaLink="false">https://www.dbrnd.com/?p=6863</guid>

					<description><![CDATA[In this post, I am sharing a system view which we can use to check the progress of running vacuum process of PostgreSQL. PostgreSQL based on MVCC, and in this architecture VACUUM is a routine task of DBA for removing dead tuples. What is Multi Version Concurrency Control (MVCC) Now the question is, How to [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F12%2Fpostgresql-check-the-progress-of-running-vacuum%2F&amp;linkname=PostgreSQL%3A%20Check%20the%20progress%20of%20running%20VACUUM" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F12%2Fpostgresql-check-the-progress-of-running-vacuum%2F&amp;linkname=PostgreSQL%3A%20Check%20the%20progress%20of%20running%20VACUUM" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F12%2Fpostgresql-check-the-progress-of-running-vacuum%2F&amp;linkname=PostgreSQL%3A%20Check%20the%20progress%20of%20running%20VACUUM" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F12%2Fpostgresql-check-the-progress-of-running-vacuum%2F&amp;linkname=PostgreSQL%3A%20Check%20the%20progress%20of%20running%20VACUUM" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F12%2Fpostgresql-check-the-progress-of-running-vacuum%2F&amp;linkname=PostgreSQL%3A%20Check%20the%20progress%20of%20running%20VACUUM" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F12%2Fpostgresql-check-the-progress-of-running-vacuum%2F&amp;linkname=PostgreSQL%3A%20Check%20the%20progress%20of%20running%20VACUUM" title="Pocket" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F12%2Fpostgresql-check-the-progress-of-running-vacuum%2F&#038;title=PostgreSQL%3A%20Check%20the%20progress%20of%20running%20VACUUM" data-a2a-url="https://www.dbrnd.com/2017/12/postgresql-check-the-progress-of-running-vacuum/" data-a2a-title="PostgreSQL: Check the progress of running VACUUM"></a></p><p>In this post, I am sharing a system view which we can use to check the progress of running vacuum process of PostgreSQL. </p>
<p>PostgreSQL based on MVCC, and in this architecture VACUUM is a routine task of DBA for removing dead tuples. </p>
<blockquote class="wp-embedded-content" data-secret="L4Sa09DfAV"><p><a href="https://www.dbrnd.com/2015/05/what-is-mvcc-multi-version-concurrency-control/">What is Multi Version Concurrency Control (MVCC)</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  src="https://www.dbrnd.com/2015/05/what-is-mvcc-multi-version-concurrency-control/embed/#?secret=L4Sa09DfAV" data-secret="L4Sa09DfAV" width="600" height="338" title="&#8220;What is Multi Version Concurrency Control (MVCC)&#8221; &#8212; Database Research &amp; Development" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p><strong>Now the question is, How to monitor the progress of VACUUM?</strong></p>
<blockquote><p>Simple, we can use pg_stat_progress_vacuum view for this purpose. In this view, we can check phase column which indicates the different stages of running the vacuum. </p></blockquote>
<pre class="crayon-plain-tag">select * from pg_stat_progress_vacuum</pre> </p>
<p>Type of phases:</p>
<blockquote><p><strong>initializing:</strong> VACUUM is preparing to begin scanning the heap<br />
<strong>scanning heap:</strong> VACUUM is currently scanning the heap<br />
<strong>vacuuming indexes:</strong> VACUUM is currently vacuuming the indexes<br />
<strong>vacuuming heap:</strong> VACUUM is currently vacuuming the heap<br />
<strong>cleaning up indexes:</strong> VACUUM is currently cleaning up indexes<br />
<strong>truncating heap:</strong> VACUUM is currently truncating the heap to return empty pages at the end of the relation to the operating system<br />
<strong>performing final cleanup:</strong> VACUUM is performing final cleanup. During this phase, VACUUM will vacuum the free space map, update statistics in pg_class, and report statistics to the statistics collector</p></blockquote>
<blockquote class="wp-embedded-content" data-secret="aHy65of6Yq"><p><a href="https://www.dbrnd.com/2016/10/postgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture/">PostgreSQL: What is a Free Space Map (FSM)?</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  src="https://www.dbrnd.com/2016/10/postgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture/embed/#?secret=aHy65of6Yq" data-secret="aHy65of6Yq" width="600" height="338" title="&#8220;PostgreSQL: What is a Free Space Map (FSM)?&#8221; &#8212; Database Research &amp; Development" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p><a href="https://www.postgresql.org/docs/10/static/progress-reporting.html" rel="noopener" target="_blank">Reference taken from the official page:</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbrnd.com/2017/12/postgresql-check-the-progress-of-running-vacuum/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>PostgreSQL: Find a Table location using pg_relation_filepath</title>
		<link>https://www.dbrnd.com/2017/02/postgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid/</link>
		
		<dc:creator><![CDATA[Anvesh Patel]]></dc:creator>
		<pubDate>Sat, 11 Feb 2017 16:16:03 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Anvesh Patel]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database research and development]]></category>
		<category><![CDATA[dbrnd]]></category>
		<category><![CDATA[FSM]]></category>
		<category><![CDATA[pg_data]]></category>
		<category><![CDATA[pg_relation_filepath]]></category>
		<category><![CDATA[plpgsql]]></category>
		<category><![CDATA[Postgres Query]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[PostgreSQL Administrator]]></category>
		<category><![CDATA[PostgreSQL Error]]></category>
		<category><![CDATA[PostgreSQL Monitoring]]></category>
		<category><![CDATA[PostgreSQL Performance Tuning]]></category>
		<category><![CDATA[PostgreSQL Programming]]></category>
		<category><![CDATA[PostgreSQL Tips and Tricks]]></category>
		<category><![CDATA[relation OID]]></category>
		<category><![CDATA[toast table]]></category>
		<category><![CDATA[VM]]></category>
		<guid isPermaLink="false">https://www.dbrnd.com/?p=4505</guid>

					<description><![CDATA[PostgreSQL stores relation information in a separate file by using OID. You can find a list of those files in the PostgreSQL data directory. It creates a file for relation like table, index, sequence and toast table. As it stores with OID (Object ID), then it&#8217;s hard to locate a particular relation file. Once you [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F02%2Fpostgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid%2F&amp;linkname=PostgreSQL%3A%20Find%20a%20Table%20location%20using%20pg_relation_filepath" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F02%2Fpostgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid%2F&amp;linkname=PostgreSQL%3A%20Find%20a%20Table%20location%20using%20pg_relation_filepath" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F02%2Fpostgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid%2F&amp;linkname=PostgreSQL%3A%20Find%20a%20Table%20location%20using%20pg_relation_filepath" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F02%2Fpostgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid%2F&amp;linkname=PostgreSQL%3A%20Find%20a%20Table%20location%20using%20pg_relation_filepath" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F02%2Fpostgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid%2F&amp;linkname=PostgreSQL%3A%20Find%20a%20Table%20location%20using%20pg_relation_filepath" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F02%2Fpostgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid%2F&amp;linkname=PostgreSQL%3A%20Find%20a%20Table%20location%20using%20pg_relation_filepath" title="Pocket" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.dbrnd.com%2F2017%2F02%2Fpostgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid%2F&#038;title=PostgreSQL%3A%20Find%20a%20Table%20location%20using%20pg_relation_filepath" data-a2a-url="https://www.dbrnd.com/2017/02/postgresql-find-a-table-location-using-pg_relation_filepath-fsm-vm-toast-oid/" data-a2a-title="PostgreSQL: Find a Table location using pg_relation_filepath"></a></p><p>PostgreSQL stores relation information in a separate file by using OID. You can find a list of those files in the PostgreSQL data directory. </p>
<blockquote><p>It creates a file for relation like table, index, sequence and toast table. As it stores with OID (Object ID), then it&#8217;s hard to locate a particular relation file. </p></blockquote>
<p>Once you get the OID and location of your table, you can quickly estimate other items like a size of a table, FSM file, VM file, toast information.</p>
<p><strong>You can access few related articles:</strong><br />
<a href="https://www.dbrnd.com/2016/10/postgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture/" target="_blank"><strong>What is FSM?</strong></a><br />
<a href="https://www.dbrnd.com/2016/10/postgresql-what-is-visibility-map-vm-table-mvcc-architecture/" target="_blank"><strong>What is VM?</strong></a><br />
<a href="https://www.dbrnd.com/2016/10/postgresql-what-is-toast-the-oversized-attribute-storage-technique-exceed-8-kb-data-page-size-extended-storage/" target="_blank"><strong>What is toast?</strong></a></p>
<p><strong>Use pg_relation_filepath() to get a location of your table:</strong></p>
<pre class="crayon-plain-tag">SELECT *FROM pg_relation_filepath('Table_Name')</pre> </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PostgreSQL: What is a Free Space Map (FSM)?</title>
		<link>https://www.dbrnd.com/2016/10/postgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture/</link>
					<comments>https://www.dbrnd.com/2016/10/postgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture/#comments</comments>
		
		<dc:creator><![CDATA[Anvesh Patel]]></dc:creator>
		<pubDate>Sat, 08 Oct 2016 16:16:11 +0000</pubDate>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Anvesh Patel]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[database research and development]]></category>
		<category><![CDATA[dbrnd]]></category>
		<category><![CDATA[file node]]></category>
		<category><![CDATA[Free Space Map]]></category>
		<category><![CDATA[FSM]]></category>
		<category><![CDATA[MVCC]]></category>
		<category><![CDATA[pg_freespace]]></category>
		<category><![CDATA[plpgsql]]></category>
		<category><![CDATA[Postgres Query]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[PostgreSQL Administrator]]></category>
		<category><![CDATA[PostgreSQL Error]]></category>
		<category><![CDATA[PostgreSQL Programming]]></category>
		<category><![CDATA[PostgreSQL Tips and Tricks]]></category>
		<category><![CDATA[VACUUM]]></category>
		<guid isPermaLink="false">https://www.dbrnd.com/?p=3654</guid>

					<description><![CDATA[In this post, sharing a small note on one of the internal architecture things of PostgreSQL. Each Table and Index has an FSM which used to keep track of available space in the relation. It stores all free space related information in an alongside primary relation and that relation starts with the file node number [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fpostgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture%2F&amp;linkname=PostgreSQL%3A%20What%20is%20a%20Free%20Space%20Map%20%28FSM%29%3F" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fpostgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture%2F&amp;linkname=PostgreSQL%3A%20What%20is%20a%20Free%20Space%20Map%20%28FSM%29%3F" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fpostgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture%2F&amp;linkname=PostgreSQL%3A%20What%20is%20a%20Free%20Space%20Map%20%28FSM%29%3F" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pinterest" href="https://www.addtoany.com/add_to/pinterest?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fpostgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture%2F&amp;linkname=PostgreSQL%3A%20What%20is%20a%20Free%20Space%20Map%20%28FSM%29%3F" title="Pinterest" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_reddit" href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fpostgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture%2F&amp;linkname=PostgreSQL%3A%20What%20is%20a%20Free%20Space%20Map%20%28FSM%29%3F" title="Reddit" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_pocket" href="https://www.addtoany.com/add_to/pocket?linkurl=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fpostgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture%2F&amp;linkname=PostgreSQL%3A%20What%20is%20a%20Free%20Space%20Map%20%28FSM%29%3F" title="Pocket" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwww.dbrnd.com%2F2016%2F10%2Fpostgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture%2F&#038;title=PostgreSQL%3A%20What%20is%20a%20Free%20Space%20Map%20%28FSM%29%3F" data-a2a-url="https://www.dbrnd.com/2016/10/postgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture/" data-a2a-title="PostgreSQL: What is a Free Space Map (FSM)?"></a></p><p>In this post, sharing a small note on one of the internal architecture things of PostgreSQL. </p>
<blockquote><p>Each Table and Index has an FSM which used to keep track of available space in the relation.</p></blockquote>
<blockquote><p>It stores all free space related information in an alongside primary relation and that relation starts with the file node number plus the suffix _fsm.</p></blockquote>
<p>If you do not know about the MVCC (Multiversion Concurrency Control), please visit below an article. </p>
<blockquote data-secret="Gt0wV2TH0i" class="wp-embedded-content"><p><a href="https://www.dbrnd.com/2015/05/what-is-mvcc-multi-version-concurrency-control/">What is Multi Version Concurrency Control (MVCC)</a></p></blockquote>
<p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  src="https://www.dbrnd.com/2015/05/what-is-mvcc-multi-version-concurrency-control/embed/#?secret=Gt0wV2TH0i" data-secret="Gt0wV2TH0i" width="600" height="338" title="&#8220;What is Multi Version Concurrency Control (MVCC)&#8221; &#8212; Database Research &amp; Development" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>Because of MVCC architecture, PostgreSQL generates dead tuples on each update and delete action.</p>
<blockquote><p>Why VACUUM requires in MVCC because VACUUM removes dead row versions in tables and marks the space available for future reuse.</p></blockquote>
<blockquote><p>The VACUUM process also updates the Free Space Map and using VACUUM FULL we can recover those free spaces.</p></blockquote>
<blockquote><p>The FSM pages are organized as a tree.<br />
The bottom level FSM pages store the free space available on each page, using one byte to represent each such page.<br />
The upper levels aggregate information from the lower levels.</p></blockquote>
<p><strong>We can also examine free space pages using pg_freespace module. </strong></p>
<pre class="crayon-plain-tag">CREATE EXTENSION pg_freespace;
SELECT * FROM pg_freespace('table_name');</pre> </p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbrnd.com/2016/10/postgresql-what-is-a-free-space-map-fsm-table-mvcc-architecture/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
