[−][src]Crate pagecache
pagecache
is a lock-free pagecache and log for building high-performance databases.
Re-exports
pub use self::logger::Log; |
pub use self::logger::LogRead; |
Modules
atomic | Atomic types |
logger | Working with |
Structs
Atomic | An atomic pointer that can be safely shared between threads. |
Backoff | Performs exponential backoff in spin loops. |
CachePadded | Pads and aligns a value to the length of a cache line. |
Collector | An epoch-based garbage collector. |
CompareAndSetError | The error returned on failed compare-and-set operation. |
Config | A finalized |
ConfigBuilder | Top-level configuration for the system. |
Guard | A guard that keeps the current thread pinned. |
LocalHandle | A handle to a garbage collector. |
Lru | A simple Lru cache. |
M | A metric collector for all pagecache users running in this process. |
Meta | A simple map that can be used to store metadata for the pagecache tenant. |
Node | A node in the lock-free |
NullMaterializer | A materializer for things that have nothing to
materialize or recover, like a standalone |
Owned | An owned heap-allocated object. |
PageCache | A lock-free pagecache which supports fragmented pages for dramatically improving write throughput. |
PagePtr | A pointer to shared lock-free state bound by a pinned epoch's lifetime. |
PageTable | A simple lock-free radix tree. |
Reservation | A pending log reservation which can be aborted or completed.
NB the holder should quickly call |
Shared | A pointer to an object protected by the epoch GC. |
Stack | A simple lock-free stack, with the ability to atomically append or entirely swap-out entries. |
StackIter | An iterator over nodes in a lock-free stack. |
Tx | A handle to an ongoing pagecache transaction. Ensures that any state which is removed from a shared in-memory data structure is not destroyed until all possible readers have concluded. |
VecSet | A set built on top of |
Enums
CacheEntry | Points to either a memory location or a disk location to page-in data from. |
DiskPtr | A pointer to a location on disk or an off-log blob. |
Error | An Error type encapsulating various issues that may come up in both the expected and unexpected operation of a PageCache. |
PageGet | The result of a |
SegmentMode | The log may be configured to write data in several different ways, depending on the constraints of the system using it. |
Traits
Materializer | A user of a |
Functions
debug_delay | This function is useful for inducing random jitter into our atomic operations, shaking out more possible interleavings quickly. It gets fully elliminated by the compiler in non-test code. |
node_from_frag_vec | Turns a vector of elements into a lock-free stack of them, and returns the head of the stack. |
pin | Pins the current thread. |
unprotected⚠ | Returns a reference to a dummy guard that allows unprotected access to |
Type Definitions
BlobPointer | A pointer to an blob blob. |
CasResult | A compare and swap result.
If the CAS is successful, the
new |
FastMap1 | A fast map that is not resistant to collision attacks. Works on one byte at a time. |
FastMap4 | A fast map that is not resistant to collision attacks. Works on 4 bytes at a time. |
FastMap8 | A fast map that is not resistant to collision attacks. Works on 8 bytes at a time. |
FastSet1 | A fast set that is not resistant to collision attacks. Works on one byte at a time. |
FastSet4 | A fast set that is not resistant to collision attacks. Works on 4 bytes at a time. |
FastSet8 | A fast set that is not resistant to collision attacks. Works on 8 bytes at a time. |
LogId | A log file offset. |
Lsn | A logical sequence number. |
MergeOperator | Allows arbitrary logic to be injected into mere operations of the |
PageId | A page identifier. |
Result | The top-level result type for dealing with the PageCache. |
SegmentId | An offset for a storage file segment. |