| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
|
| |
| |
| |
| | |
refs WT-1912
|
| |
| |
| |
| | |
operations: get a snapshot, and update the oldest ID.
|
| |
| |
| |
| | |
likely success.
|
| |
| |
| |
| |
| | |
on behalf of eviction, the results are the same and we avoid a branch in
the case of simple transactions.
|
|/
|
|
|
| |
primary function into two other functions so the compiler can split the
code into two versions instead of handling the branches at run-time.
|
| |
|
|
|
|
|
| |
configuration component; inline the part without a configuration
component to simplify creating an auto-commit transaction.
|
|\
| |
| | |
Track the checkpoint generation per file
|
| |
| |
| |
| |
| |
| | |
* Remove a couple of new statistics.
* Move where we update checkpoint_gen to be a bit more aggresive
* Change some local variable names.
|
| | |
|
| | |
|
| |
| |
| |
| | |
is a snapshot.
|
| |
| |
| |
| | |
Fix the new statistics as well.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
We only need one version - the logic to exclude the correct IDs
is included in the function.
Refs #1745
|
| |
| |
| |
| | |
to use txn_visible_checkpoint.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This should allow us to evict more pages while a checkpoint is
in progress. We can evict dirty pages from a file once the
checkpoint is finished in that file. Similarly for the row store
specific obsolete update check.
Refs #1745
|
|/
|
|
| |
pinned, not whether the TXN_SNAPSHOT flag is set.
|
|
|
|
|
|
| |
cache handling into a separate function.
refs #1596
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't count pages evicted by a worker thread as an "application thread"
eviction; add a new statistic to distinguish between the server itself
evicting pages and the eviction worker threads evicting.
Don't increment the eviction counters unless we find a page to evict,
__evict_lru_pages() gets called a huge number of times in any workload
where eviction is happening.
Discussion:
The "is_app" flag is being used for a few purposes:
- if we should perform the "oldest transaction in the system" test,
- if the evictor thread is the eviction server,
- if the "eviction by an application thread" counter should be incremented,
- if the session's split generation can be non-zero after eviction.
Move the "oldest transaction in the system" test outside of the eviction
code, and do that test before trying to evict a page (this required
moving __wt_txn_am_oldest() from include/txn.i (an inlined function)
into txn/txn.c (a real function).
Replace the "is_app" flag with an "is_server" flag to distinguish
between the eviction server and eviction work threads (we can
distinguish between application threads and worker/server threads using
the WT_SESSION_INTERNAL flag in the WT_SESSION handle).
Reference SERVER-16997, SERVER-17020.
|
|
|
|
|
|
| |
that requires an ID or snapshot.
refs SERVER-16790
|
| |
|
|
|
|
| |
Increase test time to 120 seconds.
|
|
|
|
|
| |
Also update checkpoint to use the saved handle instead of
searching for it again.
|
|
|
|
| |
on the next cursor operation.
|
| |
|
|\
| |
| | |
Improvements for long-running transactions
|
| |
| |
| |
| | |
ID doesn't need to stay pinned.
|
|/ |
|
| |
|
| |
|
|
|
|
|
|
| |
becomes globally visible. We want post-increment semantics but our atomic primitive is pre-increment.
refs #1200
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| | |
LSM chunk, copy the current transaction ID when the chunk is switched. This avoids work in the fast path, and also prevents races between worker threads and ordinary operations (e.g., attempting to flush all chunks as part of a compact operation).
|
|/
|
|
|
|
|
|
|
| |
row-store leaf page keys.
If a page has no Huffman or prefix compression, and no overflow keys,
encode the key's page offset and size in the WT_ROW pointer and set a
flag on the page. From that point on, when the flag is set, we can
go directly to the key instead of unpacking the key's cell each time.
|
|
|
|
|
| |
Due to the change to delay allocating transaction IDs for read only
transactions.
|
| |
|
| |
|
|
|
|
| |
an ID and/or with a snapshot. Allocate an ID just before we log the first update. Also allocate a transaction ID in the extension API, for extensions that require one.
|
|
|
|
|
|
|
| |
Transaction IDs only need to be allocated for updates, so allocating them
on during __wt_page_in is overkill.
Rename some of the transaction ID functions to be more user friendly.
|
|
|
|
|
|
| |
support read-only transactions, there is no need for any special handling of the checkpoint transaction: it won't allocate an ID for itself in the global table.
refs #969, #978
|
|
|
|
|
| |
References #975
Useful for read-only workloads that use explicit transactions.
|
|\ |
|
| |
| |
| |
| | |
to WT_UPDATEs. Split out `__wt_txn_modify` into two parts: the first creates an WT_TXN_OP structure (for rollback), the writes a log record into the in-memory log buffer.
|
| |
| |
| |
| | |
longer point at any on-page structures apart from WT_UPDATEs.
|
|/ |
|
| |
|