提交 5064fb56 authored 作者: Thomas Mueller's avatar Thomas Mueller

Documentation.

上级 1e776e6b
...@@ -17,7 +17,16 @@ Change Log ...@@ -17,7 +17,16 @@ Change Log
<h1>Change Log</h1> <h1>Change Log</h1>
<h2>Next Version (unreleased)</h2> <h2>Next Version (unreleased)</h2>
<ul><li>In version 1.4.184, a bug was introduced that broke queries <ul><li>The default limit for in-place LOB objects was changed from 128 to 256 bytes.
This is because each read creates a reference to a LOB, and maintaining the references
is a big overhead. With the higher limit, less references are needed.
</li><li>Tables without columns didn't work.
(The use case for such tables is testing.)
</li><li>The LIRS cache now resizes the table automatically in all cases
and no longer needs the averageMemory configuration.
</li><li>Creating a linked table from an MVStore database to a non-MVStore database
created a second (non-MVStore) database file.
</li><li>In version 1.4.184, a bug was introduced that broke queries
that have both joins and wildcards, for example: that have both joins and wildcards, for example:
select * from dual join(select x from dual) on 1=1 select * from dual join(select x from dual) on 1=1
</li></ul> </li></ul>
......
...@@ -53,15 +53,14 @@ MVStore: ...@@ -53,15 +53,14 @@ MVStore:
- test and possibly improve compact operation (for large dbs) - test and possibly improve compact operation (for large dbs)
- is data kept in the stream store if the transaction is not committed? - is data kept in the stream store if the transaction is not committed?
- automated 'kill process' and 'power failure' test - automated 'kill process' and 'power failure' test
- compact: avoid processing pages using a counting bloom filter
- defragment (re-creating maps, specially those with small pages) - defragment (re-creating maps, specially those with small pages)
- store number of write operations per page (maybe defragment - store number of write operations per page (maybe defragment
if much different than count) if much different than count)
- r-tree: nearest neighbor search - r-tree: nearest neighbor search
- use a small object value cache (StringCache), test on Android - use a small object value cache (StringCache), test on Android
for default serialization for default serialization
- MVStoreTool.dump: dump values (using a callback) - MVStoreTool.dump should dump the data if possible;
- close the file on out of memory or disk write error (out of disk space or so) possibly using a callback for serialization
- implement a sharded map (in one store, multiple stores) - implement a sharded map (in one store, multiple stores)
to support concurrent updates and writes, and very large maps to support concurrent updates and writes, and very large maps
- to save space when persisting very small transactions, - to save space when persisting very small transactions,
...@@ -72,8 +71,6 @@ MVStore: ...@@ -72,8 +71,6 @@ MVStore:
- remove features that are not really needed; simplify the code - remove features that are not really needed; simplify the code
possibly using a separate layer or tools possibly using a separate layer or tools
(retainVersion?) (retainVersion?)
- MVStoreTool.dump should dump the data if possible;
possibly using a callback for serialization
- optional pluggable checksum mechanism (per page), which - optional pluggable checksum mechanism (per page), which
requires that everything is a page (including headers) requires that everything is a page (including headers)
- rename "store" to "save", as "store" is used in "storeVersion" - rename "store" to "save", as "store" is used in "storeVersion"
...@@ -98,7 +95,6 @@ MVStore: ...@@ -98,7 +95,6 @@ MVStore:
- write a LSM-tree (log structured merge tree) utility on top of the MVStore - write a LSM-tree (log structured merge tree) utility on top of the MVStore
with blind writes and/or a bloom filter that with blind writes and/or a bloom filter that
internally uses regular maps and merge sort internally uses regular maps and merge sort
- LIRS cache: maybe remove 'mask' field, and dynamically grow the arrays
- chunk metadata: maybe split into static and variable, - chunk metadata: maybe split into static and variable,
or use a small page size for metadata or use a small page size for metadata
- data type "string": maybe use prefix compression for keys - data type "string": maybe use prefix compression for keys
...@@ -122,7 +118,6 @@ MVStore: ...@@ -122,7 +118,6 @@ MVStore:
- rollback of removeMap should restore the data - - rollback of removeMap should restore the data -
which has big consequences, as the metadata map which has big consequences, as the metadata map
would probably need references to the root nodes of all maps would probably need references to the root nodes of all maps
- combine MVMap and MVMapConcurrent
*/ */
...@@ -322,14 +317,13 @@ public class MVStore { ...@@ -322,14 +317,13 @@ public class MVStore {
int mb = o == null ? 16 : (Integer) o; int mb = o == null ? 16 : (Integer) o;
if (mb > 0) { if (mb > 0) {
int maxMemoryBytes = mb * 1024 * 1024; int maxMemoryBytes = mb * 1024 * 1024;
int averageMemory = Math.max(10, pageSplitSize / 2);
int segmentCount = 16; int segmentCount = 16;
int stackMoveDistance = maxMemoryBytes / averageMemory * 2 / 100; int stackMoveDistance = 8;
cache = new CacheLongKeyLIRS<Page>( cache = new CacheLongKeyLIRS<Page>(
maxMemoryBytes, averageMemory, maxMemoryBytes,
segmentCount, stackMoveDistance); segmentCount, stackMoveDistance);
cacheChunkRef = new CacheLongKeyLIRS<PageChildren>( cacheChunkRef = new CacheLongKeyLIRS<PageChildren>(
maxMemoryBytes / 4, 20, maxMemoryBytes / 4,
segmentCount, stackMoveDistance); segmentCount, stackMoveDistance);
} }
o = config.get("autoCommitBufferSize"); o = config.get("autoCommitBufferSize");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论