Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
ZODB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
ZODB
Commits
771f1b48
Commit
771f1b48
authored
Jul 20, 2005
by
Tim Peters
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Massive rewrite of cache.txt, to match current reality.
parent
2fbda114
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
32 additions
and
51 deletions
+32
-51
doc/ZEO/cache.txt
doc/ZEO/cache.txt
+31
-50
src/ZEO/cache.py
src/ZEO/cache.py
+1
-1
No files found.
doc/ZEO/cache.txt
View file @
771f1b48
ZEO Client Cache
ZEO Client Cache
The
Client cache provides a disk based cache for each ZEO client.
The
client cache provides a disk based cache for each ZEO client. The
The client cache allows reads to be done from local disk rather than
client cache allows reads to be done from local disk rather than by remote
by remote
access to the storage server.
access to the storage server.
The cache may be persistent or transient. If the cache is
The cache may be persistent or transient. If the cache is persistent, then
persistent, then the cache files are retained for use after process
the cache file is retained for use after process restarts. A non-
restarts. A non-persistent cache uses temporary files that are
persistent cache uses a temporary file.
removed when the client storage is closed.
The client cache is managed as two files. The cache manager
The client cache is managed in a single file, of the specified size.
endeavors to maintain the two files at sizes less than or equal to
one half the cache size. One of the cache files is designated the
"current" cache file. The other cache file is designated the "old"
cache file, if it exists. All writes are done to the current cache
files. When transactions are committed on the client, transactions
are not split between cache files. Large transactions may cause
cache files to be larger than one half the target cache size.
The life of the cache is as follows:
The life of the cache is as follows:
- When the cache is created, the first of the two cache files is
- The cache file is opened (if it already exists), or created and set to
created and designated the "current" cache fil
e.
the specified siz
e.
- Cache records are written to the cache file, either as
- Cache records are written to the cache file, as transactions commit
transactions commit locally, or as data are loaded from the
locally, and as data are loaded from the server.
server.
- When the cache file size exceeds one half the cache size, the
- Writes are to "the current file position". This is a pointer that
second cache file is created and designated the "current" cache
travels around the file, circularly. After a record is written, the
file. The first cache file becomes the "old" cache file.
pointer advances to just beyond it. Objects starting at the current
file position are evicted, as needed, to make room for the next record
written.
- Cache records are written to the new current cache file, either as
A distinct index file is not created, although indexing structures are
transactions commit locally, or as data are loaded from the
maintained in memory while a ClientStorage is running. When a persistent
server.
client cache file is reopened, these indexing structures are recreated
by analyzing the file contents.
- When a cache hit is found in the old cache file, it is copied to
Persistent cache files are created in the directory named in the ``var``
the current cache file.
argument to the ClientStorage, or if ``var`` is None, in the current
working directory. Persistent cache files have names of the form::
- When the current cache file size exceeds one half the cache size, the
client-storage.zec
first cache file is recreated and designated the "current" cache
file. The second cache file becomes the "old" cache file.
and so on.
Persistent cache files are created in the directory named in the
'var' argument to the ClientStorage (see ClientStorage.txt) or in
the 'var' subdirectory of the directory given by the INSTANCE_HOME
builtin (created by Zope), or in the current working directory.
Persistent cache files have names of the form::
cstorage-client-n.zec
where:
where:
storage -- the storage name
client -- the client name, as given by the ClientStorage's ``client``
argument
client -- the client name, as given by the 'ZEO_CLIENT' environment
variable or the 'client' argument provided when creating a client
storage.
n -- '0' for the first cache file and '1' for the second.
For example, the second cache file for storage 'spam' and client 8881
storage -- the storage name, as given by the ClientStorage's ``storage``
would be named 'cspam-8881-1.zec'.
argument; this is typically a string denoting a small integer,
"1" by default
For example, the cache file for client '8881' and storage 'spam' is named
"8881-spam.zec".
src/ZEO/cache.py
View file @
771f1b48
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
ClientCache exposes an API used by the ZEO client storage. FileCache stores
ClientCache exposes an API used by the ZEO client storage. FileCache stores
objects on disk using a 2-tuple of oid and tid as key.
objects on disk using a 2-tuple of oid and tid as key.
ClientCache
s API is similar to a storage API
with methods like load(),
ClientCache
's API is similar to a storage API,
with methods like load(),
store(), and invalidate(). It manages in-memory data structures that allow
store(), and invalidate(). It manages in-memory data structures that allow
it to map this richer API onto the simple key-based API of the lower-level
it to map this richer API onto the simple key-based API of the lower-level
FileCache.
FileCache.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment