× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Do not confuse predictive [row] read-ahead with access of the row data itself. The row was accessed, and it is being brought into memory without a page fault. It is not merely for performance, it is to limit the amount of work from an I/O perspective; although very interrelated, they are not the same. If the code knows where the data is and can ask for it nicely [i.e. efficiently] then it should do so rather than have the presumed access come about forced [by faulting; i.e. inefficiently].

I can agree on the one segment concern given the Segment1 layout, but there is no reason that the data can not be mapped in the page-aligned data segment, such that it enables most updates to VARCHAR to occur without rewriting the LOB data. I actually would expect that is the design; the goal being, to minimize any data move/copy activity. When LOB data is part of the segment the db can easily reserve some extra room for the VARCHAR data [at an almost invisible cost to storage, as seen by the user; room may already be there just by standard alignment of the data within the segment].

However if the VARCHAR is moved after the LOB data [by an update to increase the amount of data in a VARCHAR field] after initially being placed in front, then the algorithm I suggested as delaying access to the LOB data is a new cost for that row. That would fit with the warning in the documentation; i.e. it can be[come] costly for access to a row that has its data flowed into the varlen segment, when there are also LOB columns defined for that row. To access the VARCHAR data the LOB must [really: would likely] be paged to get there. I suppose it is plain silly for me to even talk about it, because as I had stated, I do not really know for sure how the data is mapped [or updated] in the varlen segment.

Having one segment per LOB column, beyond the one for the VARCHAR, is not always going to be more efficient than one. And the management of the additional segments obviously adds to the complexity, especially given the single-segment implementation for VARCHAR already existed and was functionally tested. The issue is obviously one of trade-offs in terms of both storage and performance, with regard to how the data will be accessed. I would suppose that if the single segment proves not to be a sufficiently good performer across various applications, then dev would investigate separating the VARCHAR from the LOB, and even possibly any /excessively/ large defined LOB to its own separate segment.

Regards, Chuck

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.