Tweaks from "final pass".
This commit is contained in:
parent
73f67a2a62
commit
decf605332
1 changed files with 11 additions and 11 deletions
|
@ -338,7 +338,7 @@ extensions and novel variants, which we cover in the next two
|
||||||
sections.
|
sections.
|
||||||
|
|
||||||
As with other systems, \yads transactions have a multi-level
|
As with other systems, \yads transactions have a multi-level
|
||||||
structure. Multi-layered transactions were originally proposed as an
|
structure. Multi-layered transactions were originally proposed as a
|
||||||
concurrency control strategy for database servers that support high
|
concurrency control strategy for database servers that support high
|
||||||
level, application specific extensions~\cite{multiLayeredSystems}.
|
level, application specific extensions~\cite{multiLayeredSystems}.
|
||||||
In \yad, the lower level of an operation provides atomic updates to regions of
|
In \yad, the lower level of an operation provides atomic updates to regions of
|
||||||
|
@ -359,7 +359,7 @@ updates bootstrap transactions that are too large to be
|
||||||
applied atomically. In particular, write-ahead logging (and therefore
|
applied atomically. In particular, write-ahead logging (and therefore
|
||||||
\yad) relies on the ability to write entries to the log
|
\yad) relies on the ability to write entries to the log
|
||||||
file atomically. Transaction systems that store sequence numbers on pages to
|
file atomically. Transaction systems that store sequence numbers on pages to
|
||||||
track version information also rely on atomic page writes.
|
track versions rely on atomic page writes in addition to atomic log writes.
|
||||||
|
|
||||||
In practice, a write to a disk page is not atomic (in modern drives). Two common failure
|
In practice, a write to a disk page is not atomic (in modern drives). Two common failure
|
||||||
modes exist. The first occurs when the disk writes a partial sector
|
modes exist. The first occurs when the disk writes a partial sector
|
||||||
|
@ -406,7 +406,7 @@ but no logging is required.
|
||||||
This approach performs poorly because we {\em force} the page to disk
|
This approach performs poorly because we {\em force} the page to disk
|
||||||
on commit, which leads to a large number of synchronous non-sequential
|
on commit, which leads to a large number of synchronous non-sequential
|
||||||
writes. By writing redo information to the log before committing
|
writes. By writing redo information to the log before committing
|
||||||
(write-ahead logging), we get {\em no force} transactions and better
|
(write-ahead logging), we get {\em no-force} transactions and better
|
||||||
performance, since the synchronous writes to the log are sequential.
|
performance, since the synchronous writes to the log are sequential.
|
||||||
Later, the pages are written out asynchronously, often
|
Later, the pages are written out asynchronously, often
|
||||||
as part of a larger sequential write.
|
as part of a larger sequential write.
|
||||||
|
@ -460,7 +460,7 @@ to build full transactions.
|
||||||
To recover a multi-page transaction, we simply recover each of
|
To recover a multi-page transaction, we simply recover each of
|
||||||
the pages individually. This works because steal/no-force completely
|
the pages individually. This works because steal/no-force completely
|
||||||
decouples the pages: any page can be written back early (steal) or
|
decouples the pages: any page can be written back early (steal) or
|
||||||
late (no force).
|
late (no-force).
|
||||||
|
|
||||||
\subsection{Concurrent Transactions}
|
\subsection{Concurrent Transactions}
|
||||||
\label{sec:nta}
|
\label{sec:nta}
|
||||||
|
@ -689,7 +689,7 @@ The record allocator and the region allocator each contain custom lock
|
||||||
management. The lock management prevents one transaction from reusing
|
management. The lock management prevents one transaction from reusing
|
||||||
storage freed by another, active transaction. If this storage were
|
storage freed by another, active transaction. If this storage were
|
||||||
reused and then the transaction that freed it aborted, then the
|
reused and then the transaction that freed it aborted, then the
|
||||||
storage would be double allocated.
|
storage would be double-allocated.
|
||||||
%If transaction A frees some storage, transaction B reuses
|
%If transaction A frees some storage, transaction B reuses
|
||||||
%the storage and commits, and then transaction A aborts, then the
|
%the storage and commits, and then transaction A aborts, then the
|
||||||
%storage would be double allocated.
|
%storage would be double allocated.
|
||||||
|
@ -785,7 +785,7 @@ and their LSNs to the log (Figure~\ref{fig:lsn-estimation}).
|
||||||
viewport=0bp 0bp 460bp 225bp,
|
viewport=0bp 0bp 460bp 225bp,
|
||||||
clip,
|
clip,
|
||||||
width=1\columnwidth]{figs/lsn-estimation.pdf}
|
width=1\columnwidth]{figs/lsn-estimation.pdf}
|
||||||
\caption{\label{fig:lsn-estimation}LSN estimation. If a page is not mentioned in the checkpoint, it must be up to date on disk.}
|
\caption{\label{fig:lsn-estimation}LSN estimation. If a page was not mentioned by the checkpoint, it must have been up-to-date on disk.}
|
||||||
\vspace{-12pt}
|
\vspace{-12pt}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
@ -1087,8 +1087,8 @@ reduce runtime overheads such as log bandwidth. Berkeley DB's
|
||||||
hash table is a popular, commonly deployed implementation, and serves
|
hash table is a popular, commonly deployed implementation, and serves
|
||||||
as a baseline for our experiments.
|
as a baseline for our experiments.
|
||||||
|
|
||||||
Both of our hash tables outperform Berkeley DB on a workload that bulk
|
Both of our hash tables outperform Berkeley DB on a workload that populates
|
||||||
loads the tables by repeatedly inserting $(key, value)$ pairs
|
the tables by repeatedly inserting $(key, value)$ pairs
|
||||||
(Figure~\ref{fig:BULK_LOAD}).
|
(Figure~\ref{fig:BULK_LOAD}).
|
||||||
%although we do not wish to imply this is always the case.
|
%although we do not wish to imply this is always the case.
|
||||||
%We do not claim that our partial implementation of \yad
|
%We do not claim that our partial implementation of \yad
|
||||||
|
@ -1228,7 +1228,7 @@ Alternatively, we could arrange for the object pool
|
||||||
to update atomically the buffer
|
to update atomically the buffer
|
||||||
manager's copy of all objects that share a given page.
|
manager's copy of all objects that share a given page.
|
||||||
|
|
||||||
The third plugin variant, ``delta'', incorporates the update/flush
|
The third plugin variant, ``delta,'' incorporates the update/flush
|
||||||
optimizations, but only writes changed portions of
|
optimizations, but only writes changed portions of
|
||||||
objects to the log. With \yads support for custom log
|
objects to the log. With \yads support for custom log
|
||||||
formats, this optimization is straightforward.
|
formats, this optimization is straightforward.
|
||||||
|
@ -1396,7 +1396,7 @@ engines automatically.
|
||||||
|
|
||||||
Object-oriented database systems~\cite{objectstore} and
|
Object-oriented database systems~\cite{objectstore} and
|
||||||
relational databases with support for user-definable abstract data
|
relational databases with support for user-definable abstract data
|
||||||
types (such as in Postgres~\cite{postgres}) provide functionality
|
types (such as in POSTGRES~\cite{postgres}) provide functionality
|
||||||
similar to extensible database toolkits. In contrast to database
|
similar to extensible database toolkits. In contrast to database
|
||||||
toolkits, which leverage type information as the database server is
|
toolkits, which leverage type information as the database server is
|
||||||
compiled, object-oriented and object-relational databases allow types
|
compiled, object-oriented and object-relational databases allow types
|
||||||
|
@ -1475,7 +1475,7 @@ when the parent aborts. (We believe that recent proposals to use
|
||||||
open, linear nesting for software transactional memory will lead to a
|
open, linear nesting for software transactional memory will lead to a
|
||||||
programming style similar to \yads~\cite{nestedTransactionPoster}.)
|
programming style similar to \yads~\cite{nestedTransactionPoster}.)
|
||||||
However, logical undo gives the programmer the option to compensate
|
However, logical undo gives the programmer the option to compensate
|
||||||
for nested top action. We expect that nested transactions could be
|
for nested top actions. We expect that nested transactions could be
|
||||||
implemented with \yad.
|
implemented with \yad.
|
||||||
|
|
||||||
\subsubsection{Distributed Programming Models}
|
\subsubsection{Distributed Programming Models}
|
||||||
|
|
Loading…
Reference in a new issue