This commit is contained in:
Sears Russell 2005-03-26 03:31:55 +00:00
parent 4d9226ab8e
commit 5c459cb167

View file

@ -1850,10 +1850,10 @@ memory to achieve good performance.
to object serialization. First, since \yad supports to object serialization. First, since \yad supports
custom log entries, it is trivial to have it store deltas to custom log entries, it is trivial to have it store deltas to
the log instead of writing the entire object during an update. the log instead of writing the entire object during an update.
Such an optimization would be difficult to achieve with Berkeley DB %Such an optimization would be difficult to achieve with Berkeley DB
since the only diff-based mechanism it supports requires changes to %since the only diff-based mechanism it supports requires changes to
span contiguous regions of a record, which is not necessarily the case for arbitrary %span contiguous regions of a record, which is not necessarily the case for arbitrary
object updates. %object updates.
%% \footnote{It is unclear if %% \footnote{It is unclear if
%% this optimization would outweigh the overheads associated with an SQL %% this optimization would outweigh the overheads associated with an SQL
@ -2022,10 +2022,10 @@ only one integer field from a ~1KB object is modified, the fully
optimized \yad correspond to a twofold speedup over the unoptimized optimized \yad correspond to a twofold speedup over the unoptimized
\yad. \yad.
In all cases, the update rate for mysql\footnote{We ran mysql using In all cases, the update rate for MySQL\footnote{We ran MySQL using
InnoDB for the table engine, as it is the fastest engine that provides InnoDB for the table engine, as it is the fastest engine that provides
similar durability to \yad. For this test, we also linked directly similar durability to \yad. For this test, we also linked directly
with the mysqld daemon library, bypassing the RPC layer. In with the libmysqld daemon library, bypassing the RPC layer. In
experiments that used the RPC layer, test completion times were orders experiments that used the RPC layer, test completion times were orders
of magnitude slower.} is slower than Berkeley DB, of magnitude slower.} is slower than Berkeley DB,
which is slower than any of the \yad variants. This performance which is slower than any of the \yad variants. This performance
@ -2063,7 +2063,7 @@ compact, object-specific diffs that \oasys produces are correctly
applied. The custom log format, when combined with direct access to applied. The custom log format, when combined with direct access to
the page file and buffer pool, drastically reduces disk and memory usage the page file and buffer pool, drastically reduces disk and memory usage
for write intensive loads. A simple extension to our recovery algorithm makes it for write intensive loads. A simple extension to our recovery algorithm makes it
easy to implement other similar optimizations in the future. easy to implement similar optimizations in the future.
%This section uses: %This section uses:
% %
@ -2089,7 +2089,7 @@ requests by reordering invocations of wrapper functions.
\subsection {Data Representation} \subsection {Data Representation}
For simplicity, we represent graph nodes as For simplicity, we represent graph nodes as
fixed-length records. The Array List from our linear hash table fixed-length records. The ArrayList from our linear hash table
implementation (Section~\ref{sub:Linear-Hash-Table}) provides access to an implementation (Section~\ref{sub:Linear-Hash-Table}) provides access to an
array of such records with performance that is competitive with native array of such records with performance that is competitive with native
recordid accesses, so we use an ArrayList to store the records. We recordid accesses, so we use an ArrayList to store the records. We
@ -2111,7 +2111,7 @@ application, but we note that the memory utilization of the simple
depth-first search algorithm is certainly no better than the algorithm depth-first search algorithm is certainly no better than the algorithm
presented in the next section. presented in the next section.
Also, for simplicity, we do not apply any of the optimizations in For simplicity, we do not apply any of the optimizations in
Section~\ref{OASYS}. This allows our performance comparison to Section~\ref{OASYS}. This allows our performance comparison to
measure only the optimization presented here. measure only the optimization presented here.
@ -2142,7 +2142,7 @@ logging format and wrapper functions to implement a purely logical log.
For our graph traversal algorithm we use a {\em log demultiplexer}, For our graph traversal algorithm we use a {\em log demultiplexer},
shown in Figure~\ref{fig:multiplexor} to route entries from a single shown in Figure~\ref{fig:multiplexor} to route entries from a single
log into many sub-logs according to page number. This is easy to do log into many sub-logs according to page number. This is easy to do
with the Array List representation that we chose for our graph, since with the ArrayList representation that we chose for our graph, since
it provides a function that maps from it provides a function that maps from
array index to a $(page, slot, size)$ triple. array index to a $(page, slot, size)$ triple.