<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: MySQL Storage Engines -  PBXT</title>
	<atom:link href="http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/</link>
	<description>Everything about MySQL Performance</description>
	<pubDate>Mon, 08 Sep 2008 05:22:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: cleaning machines</title>
		<link>http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-290482</link>
		<dc:creator>cleaning machines</dc:creator>
		<pubDate>Wed, 30 Apr 2008 14:11:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-290482</guid>
		<description>for thanks.</description>
		<content:encoded><![CDATA[<p>for thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Doug's Oracle Blog</title>
		<link>http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-127262</link>
		<dc:creator>Doug's Oracle Blog</dc:creator>
		<pubDate>Fri, 18 May 2007 09:16:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-127262</guid>
		<description>&lt;strong&gt;Log Buffer #45...&lt;/strong&gt;


It's my turn again and, looking back at Log Buffer #4, I was amazed to realise that we're up to number 45 already and that my previous attempt was last August. Good work from Dave Edwards, who bears the organisational burden every week. Sooner him ...</description>
		<content:encoded><![CDATA[<p><strong>Log Buffer #45&#8230;</strong></p>
<p>It&#8217;s my turn again and, looking back at Log Buffer #4, I was amazed to realise that we&#8217;re up to number 45 already and that my previous attempt was last August. Good work from Dave Edwards, who bears the organisational burden every week. Sooner him &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-125023</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Tue, 15 May 2007 08:37:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-125023</guid>
		<description>Shrini,

I'm not sure what you mean by writing to only one file. PBXT has transactional log file and even more - there is per table "Data Log File" and there is per database "action log file", the last one is what you're looking for. 

Regarding access to the old versions  - it looks like it is not available and  the main reason is There is no such functionality in SQL and MySQL Storage engine interface so that would require quite a lot of hacks.

But I agree this would be quite handy.  In fact most multi versioning systems should be able to implement such functionality. All they need to do is to map between timestamps and version numbers and make sure they only purge data versions which are more than certain time old. 

Most systems however are not designed to store potentially many thousands of row versions - quite frequently versions are implemented as linked lists so it could become rather slow.  Not to mention other problems such as examining all row versions in index tree for index lookups etc.</description>
		<content:encoded><![CDATA[<p>Shrini,</p>
<p>I&#8217;m not sure what you mean by writing to only one file. PBXT has transactional log file and even more - there is per table &#8220;Data Log File&#8221; and there is per database &#8220;action log file&#8221;, the last one is what you&#8217;re looking for. </p>
<p>Regarding access to the old versions  - it looks like it is not available and  the main reason is There is no such functionality in SQL and MySQL Storage engine interface so that would require quite a lot of hacks.</p>
<p>But I agree this would be quite handy.  In fact most multi versioning systems should be able to implement such functionality. All they need to do is to map between timestamps and version numbers and make sure they only purge data versions which are more than certain time old. </p>
<p>Most systems however are not designed to store potentially many thousands of row versions - quite frequently versions are implemented as linked lists so it could become rather slow.  Not to mention other problems such as examining all row versions in index tree for index lookups etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peter</title>
		<link>http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-125019</link>
		<dc:creator>peter</dc:creator>
		<pubDate>Tue, 15 May 2007 08:25:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-125019</guid>
		<description>Mark,

Innodb is different.  Innodb has purge which removes not needed row records. It does not do anything with other data.

In PBXT it is more like "Optimize" which  scans the original data set and writes it to the new location eliminating holes. 

This is actually very interesting - a lot of people would with MyISAM or any storage engine for this sake has online optimize table.    Now PBXT kind of has it (for dynamic length portion).    I'm however concerned about performance impact and controls available for frequency of the process and for it resource consumption.

The fact thread is low priority normally would not help much because it is going to be IO bound.</description>
		<content:encoded><![CDATA[<p>Mark,</p>
<p>Innodb is different.  Innodb has purge which removes not needed row records. It does not do anything with other data.</p>
<p>In PBXT it is more like &#8220;Optimize&#8221; which  scans the original data set and writes it to the new location eliminating holes. </p>
<p>This is actually very interesting - a lot of people would with MyISAM or any storage engine for this sake has online optimize table.    Now PBXT kind of has it (for dynamic length portion).    I&#8217;m however concerned about performance impact and controls available for frequency of the process and for it resource consumption.</p>
<p>The fact thread is low priority normally would not help much because it is going to be IO bound.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Srini</title>
		<link>http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-124988</link>
		<dc:creator>Srini</dc:creator>
		<pubDate>Tue, 15 May 2007 06:12:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-124988</guid>
		<description>Based on your experience upon using PBXT for your project, can you clarify the following. We are evaluating usage of PBXT for one of our project. To my understanding PBXT engine writes to only one file and there is no transaction log file in the PBXT engine which will maintain the history of transactions. 

In this scenario, Is there any option to specify the number of versions to be maintained by the PBXT storage engine. If it is possible could you please let me know whether the following is possible using PBXT storage engine,

a. Fetching a row using its version number (or) fetch the previous version? Fetching the previous version should fetch the previous version from all the related tables if the row spans across multiple tables. This will enable to have a consistent rollback. 
 
b. Fetch/Select based on a timestamp. For example let us say, i am showing some Sales records in a client view and also showing the total sales as S1 at time X. There may be a new sales record added or some modified after time X, but whatever queries I make must always query the data that was existing before time X.  
 
So, I would like to query the database with an explicit timestamp value specified in the query. This will help me having a cache which need not have to be deleted for every update that is happening after time X if at all an explicit refresh operation is done. 

Srini</description>
		<content:encoded><![CDATA[<p>Based on your experience upon using PBXT for your project, can you clarify the following. We are evaluating usage of PBXT for one of our project. To my understanding PBXT engine writes to only one file and there is no transaction log file in the PBXT engine which will maintain the history of transactions. </p>
<p>In this scenario, Is there any option to specify the number of versions to be maintained by the PBXT storage engine. If it is possible could you please let me know whether the following is possible using PBXT storage engine,</p>
<p>a. Fetching a row using its version number (or) fetch the previous version? Fetching the previous version should fetch the previous version from all the related tables if the row spans across multiple tables. This will enable to have a consistent rollback. </p>
<p>b. Fetch/Select based on a timestamp. For example let us say, i am showing some Sales records in a client view and also showing the total sales as S1 at time X. There may be a new sales record added or some modified after time X, but whatever queries I make must always query the data that was existing before time X.  </p>
<p>So, I would like to query the database with an explicit timestamp value specified in the query. This will help me having a cache which need not have to be deleted for every update that is happening after time X if at all an explicit refresh operation is done. </p>
<p>Srini</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Callaghan</title>
		<link>http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-124865</link>
		<dc:creator>Mark Callaghan</dc:creator>
		<pubDate>Tue, 15 May 2007 00:16:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.mysqlperformanceblog.com/2007/05/14/mysql-storage-engines-pbxt/#comment-124865</guid>
		<description>To be fair, InnoDB has always had a VACUUM. It is the purge thread that removes deleted rows when they are no longer visible to other transactions. But as is typical of InnoDB, you don't have to worry about it. It just works. Although for multi-disk servers we do need to tune some of the constants governing the amount of IO done by all of the background tasks.</description>
		<content:encoded><![CDATA[<p>To be fair, InnoDB has always had a VACUUM. It is the purge thread that removes deleted rows when they are no longer visible to other transactions. But as is typical of InnoDB, you don&#8217;t have to worry about it. It just works. Although for multi-disk servers we do need to tune some of the constants governing the amount of IO done by all of the background tasks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
