| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |\ |
|
| | |
| |
| |
| |
| | |
drop obsolete remove_output()
fix get_output_key(global), fix crash in blockchain_dump
|
| | |
| |
| |
| | |
Try to rationalize the variable names, document usage.
|
| | |
| |
| |
| | |
Helps when they're called repeatedly in one txn
|
| | |
| |
| |
| | |
Saves another ~150MB or so on the full blockchain
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Also bumped DB VERSION to 1
Another significant speedup and space savings:
Get rid of global_output_indices, remove indirection from output to keys
This is the change warptangent described on irc but never got to finish.
|
| | |
| |
| |
| |
| |
| | |
Saves another 90MB on 200000 block import.
Had to bring back compare_uint64 for this, but it's safe since
this table is always 64-bit aligned.
|
| | |
| |
| |
| | |
Small space savings, no measurable speedup
|
| | |
| |
| |
| | |
Only a small savings...
|
| | | |
|
| | |
| |
| |
| | |
m_tx_outputs doesn't need to be changed, as it's no longer dup list.
|
| | |
| |
| |
| | |
This is possible on those using a tx index as a key.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This speeds up wallet refresh by directly retrieving a tx's amount output indices.
It removes the indirection and walking the amount output duplicate list
for every amount in each requested tx.
"tx_outputs" is used by:
Amount output indices are needed for wallet refresh.
Global output indices are needed for removing a tx.
Both amount output indices and global output indices are now stored in
an array of 64-bit unsigned ints:
tx_outputs[<tx_hash>] -> [ <a1_oi, a1_gi, a2_oi, a2_gi, ...> ]
Previously it was:
tx_outputs[<tx_hash>] -> duplicate list of <a1_gi, a2_gi, a3_gi, ...>
The amount output list had to be walked for every amount in order to
find each amount's output index, by comparing the amount's global output
index with each one in the duplicate list until a match was found.
See also d045dfa7ce0bf131681193c97560da26f9f37900
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a list of existing output amounts along with the number
of outputs of that amount in the blockchain.
The daemon command takes:
- no parameters: all outputs with at least 3 instances
- one parameter: all outputs with at least that many instances
- two parameters: all outputs within that many instances
The default starts at 3 to avoid massive spamming of all dust
outputs in the blockchain, and is the current minimum mixin
requirement.
An optional vector of amounts may be passed, to request
histogram only for those outputs.
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
Only if we created the readtxn. Was missing cleanups from exceptions before.
|
| | |
| |
| |
| |
| | |
Only one return and TXN_POSTFIX_RDONLY() per function
Only log rtxn_start if the rtxn wasn't already active
|
| | |
| |
| |
| | |
Make sure we stop the right txn too
|
| |\ \
| | |
| | |
| | | |
2abdb2c avoid some val copies (Howard Chu)
|
| | | | |
|
| |/ /
| |
| |
| |
| | |
save the thread ID of the writer thread so we don't try to use
the writetxn from reader threads
|
| |/
|
|
| |
More uses of db error helper
|
| |\
| |
| |
| |
| |
| | |
bdec7cb BlockchainLMDB: Use DB error helper consistently (warptangent)
c5932eb BlockchainLMDB: Add DB error to exception (warptangent)
a49c355 Blockchain: Omit verbose time stats messages by default (warptangent)
|
| | | |
|
| | | |
|
| |\ \
| | |
| | |
| | | |
ee7a8b8 Get rid of lmdb_cur (Howard Chu)
|
| | |/
| |
| |
| | |
We don't need it now with per-txn cursors.
|
| |/
|
|
| |
Let ARMv7 work again
|
| |
|
|
|
|
|
| |
If user-defined comparator is used, subdb shouldn't be opened with
MDB_INTEGERKEY.
TODO: Again, this will be added back with future schema updates.
|
| |
|
|
|
|
| |
For now, so existing databases work.
TODO: add these back with future schema updates.
|
| | |
|
| |
|
|
| |
And cleanup some key comparators
|
| |
|
|
| |
Could wrap more later.
|
| |
|
|
| |
in get_global_output_indices
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
When keys are contiguous and monotonically increasing, this gets
denser page utilization (doesn't leave padding in page splits).
Can't be used for keys that are inserted in random order (e.g. hashes)
In total this only saves around 1.5% of space compared to original
DB code. The previous patch accounted for 0.8% savings on its own;
the blocks tables just aren't that big.
|
| |
|
|
|
| |
Saves a bit of seek overhead. LMDB frees them automatically
in txn_(commit|abort) so they need no cleanup.
|
| |
|
|
|
| |
Used in batch size estimation, avoids rereading already processed
blocks during import
|
| |
|
|
|
| |
Reduce frequency of resizes: bump minimum increase from 128MB to 512MB
Use a bigger safety margin at small batch sizes
|
| |
|
|
|
|
|
|
| |
Add another DB error exception type to distinguish failed txn setup from
general use of txn.
This keeps the error handling flow the same as before the block-level
txn setup changes that moved control up a layer to BlockchainDB.
|