diff --git a/nitrite-mvstore-adapter/src/main/java/org/dizitart/no2/mvstore/MVStoreModuleBuilder.java b/nitrite-mvstore-adapter/src/main/java/org/dizitart/no2/mvstore/MVStoreModuleBuilder.java index 63bcdddc..90c56254 100644 --- a/nitrite-mvstore-adapter/src/main/java/org/dizitart/no2/mvstore/MVStoreModuleBuilder.java +++ b/nitrite-mvstore-adapter/src/main/java/org/dizitart/no2/mvstore/MVStoreModuleBuilder.java @@ -107,9 +107,15 @@ public class MVStoreModuleBuilder { /** * The amount of memory a MVStore page should contain at most, in bytes, - * before it is split. The default is 16 KB. - */ - private int pageSplitSize = 16; + * before it is split. The default is 16 KB, which is also MVStore's own + * default for a persistent store. + *
+ * MVStore reads this value in bytes. It used to default to {@code 16}, so + * every leaf page split as soon as it held more than one entry: a store + * carried roughly one entry per page, and every lookup descended a tree + * about twice as deep as it needed to be. + */ + private int pageSplitSize = 16 * 1024; /** * The file store used by the MVStore. diff --git a/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleBuilderTest.java b/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleBuilderTest.java index ff388a2a..73b17a5b 100644 --- a/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleBuilderTest.java +++ b/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleBuilderTest.java @@ -33,7 +33,7 @@ public void testConstructor() { assertTrue(actualMvStoreModuleBuilder.autoCommit()); assertFalse(actualMvStoreModuleBuilder.recoveryMode()); assertFalse(actualMvStoreModuleBuilder.readOnly()); - assertEquals(Short.SIZE, actualMvStoreModuleBuilder.pageSplitSize()); + assertEquals(16 * 1024, actualMvStoreModuleBuilder.pageSplitSize()); assertNull(actualMvStoreModuleBuilder.fileStore()); assertEquals("Path", actualMvStoreModuleBuilder.filePath()); assertTrue(actualMvStoreModuleBuilder.eventListeners().isEmpty()); @@ -66,7 +66,7 @@ public void testConstructor2() { MVStoreModuleBuilder actualMvStoreModuleBuilder = new MVStoreModuleBuilder(); assertTrue(actualMvStoreModuleBuilder.autoCommit()); assertFalse(actualMvStoreModuleBuilder.recoveryMode()); - assertEquals(Short.SIZE, actualMvStoreModuleBuilder.pageSplitSize()); + assertEquals(16 * 1024, actualMvStoreModuleBuilder.pageSplitSize()); assertTrue(actualMvStoreModuleBuilder.eventListeners().isEmpty()); assertEquals(1024, actualMvStoreModuleBuilder.autoCommitBufferSize()); assertEquals(Short.SIZE, actualMvStoreModuleBuilder.cacheSize()); diff --git a/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleTest.java b/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleTest.java index 13a55b03..5661cd27 100644 --- a/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleTest.java +++ b/nitrite-mvstore-adapter/src/test/java/org/dizitart/no2/mvstore/MVStoreModuleTest.java @@ -33,7 +33,7 @@ public void testWithConfig() { MVStoreModuleBuilder actualWithConfigResult = MVStoreModule.withConfig(); assertTrue(actualWithConfigResult.autoCommit()); assertFalse(actualWithConfigResult.recoveryMode()); - assertEquals(Short.SIZE, actualWithConfigResult.pageSplitSize()); + assertEquals(16 * 1024, actualWithConfigResult.pageSplitSize()); assertTrue(actualWithConfigResult.eventListeners().isEmpty()); assertEquals(1024, actualWithConfigResult.autoCommitBufferSize()); assertEquals(Short.SIZE, actualWithConfigResult.cacheSize());