use of org.neo4j.register.Register.DoubleLongRegister in project neo4j by neo4j.
the class IndexingService method indexUpdatesAndSize.
public DoubleLongRegister indexUpdatesAndSize(LabelSchemaDescriptor descriptor) throws IndexNotFoundKernelException {
final long indexId = indexMapRef.getOnlineIndexId(descriptor);
final DoubleLongRegister output = Registers.newDoubleLongRegister();
storeView.indexUpdatesAndSize(indexId, output);
return output;
}
use of org.neo4j.register.Register.DoubleLongRegister in project neo4j by neo4j.
the class IndexingService method indexUniqueValuesPercentage.
public double indexUniqueValuesPercentage(LabelSchemaDescriptor descriptor) throws IndexNotFoundKernelException {
final long indexId = indexMapRef.getOnlineIndexId(descriptor);
final DoubleLongRegister output = Registers.newDoubleLongRegister();
storeView.indexSample(indexId, output);
long unique = output.readFirst();
long size = output.readSecond();
if (size == 0) {
return 1.0d;
} else {
return ((double) unique) / ((double) size);
}
}
use of org.neo4j.register.Register.DoubleLongRegister in project neo4j by neo4j.
the class IndexSamplingIntegrationTest method shouldSampleNotUniqueIndex.
@Test
public void shouldSampleNotUniqueIndex() throws Throwable {
GraphDatabaseService db = null;
long deletedNodes = 0;
try {
// Given
db = new TestGraphDatabaseFactory().newEmbeddedDatabase(testDirectory.graphDbDir());
IndexDefinition indexDefinition;
try (Transaction tx = db.beginTx()) {
indexDefinition = db.schema().indexFor(label).on(property).create();
tx.success();
}
try (Transaction tx = db.beginTx()) {
db.schema().awaitIndexOnline(indexDefinition, 10, TimeUnit.SECONDS);
tx.success();
}
try (Transaction tx = db.beginTx()) {
for (int i = 0; i < nodes; i++) {
db.createNode(label).setProperty(property, names[i % names.length]);
tx.success();
}
}
try (Transaction tx = db.beginTx()) {
for (int i = 0; i < (nodes / 10); i++) {
db.findNodes(label, property, names[i % names.length]).next().delete();
deletedNodes++;
tx.success();
}
}
} finally {
if (db != null) {
db.shutdown();
}
}
// When
triggerIndexResamplingOnNextStartup();
// Then
// sampling will consider also the delete nodes till the next lucene compaction
DoubleLongRegister register = fetchIndexSamplingValues(db);
assertEquals(names.length, register.readFirst());
assertEquals(nodes, register.readSecond());
// but the deleted nodes should not be considered in the index size value
DoubleLongRegister indexSizeRegister = fetchIndexSizeValues(db);
assertEquals(0, indexSizeRegister.readFirst());
assertEquals(nodes - deletedNodes, indexSizeRegister.readSecond());
}
use of org.neo4j.register.Register.DoubleLongRegister in project neo4j by neo4j.
the class CountsRecordState method counts.
private DoubleLongRegister counts(CountsKey key) {
DoubleLongRegister count = counts.get(key);
if (count == null) {
count = Registers.newDoubleLongRegister(DEFAULT_FIRST_VALUE, DEFAULT_SECOND_VALUE);
counts.put(key, count);
}
return count;
}
use of org.neo4j.register.Register.DoubleLongRegister in project neo4j by neo4j.
the class CountsRecordState method accept.
@Override
public void accept(CountsVisitor visitor) {
for (Map.Entry<CountsKey, DoubleLongRegister> entry : counts.entrySet()) {
DoubleLongRegister register = entry.getValue();
entry.getKey().accept(visitor, register.readFirst(), register.readSecond());
}
}
Aggregations