You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: modules/ROOT/pages/database-internals/concurrent-data-access.adoc
+5-7Lines changed: 5 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -257,27 +257,25 @@ For these additional locks, no assumptions or guarantees can be made concerning
257
257
258
258
=== Locks for dense nodes
259
259
260
-
When creating or deleting relationships in Neo4j, dense nodes are not exclusively locked during a transaction.
260
+
When creating or deleting relationships, Neo4j does not exclusively lock dense nodes during a transaction.
261
261
Rather, internally shared locks prevent the deletion of nodes and shared degree locks are acquired for synchronizing with concurrent label changes for those nodes to ensure correct count updates.
262
262
263
263
`standard`, `aligned`, and `high_limit` store formats::
264
264
A node is considered dense if it, at any point, has had 50 or more relationships.
265
-
Even if it later has fewer than 50 relationships, it is still considered dense.
266
-
+
267
-
A node is considered sparse if it has never had more than 50 relationships.
268
-
+
265
+
Even if it later has fewer than 50 relationships, it is still considered dense. +
266
+
A node is considered sparse if it has never had more than 50 relationships. +
269
267
You can configure the relationship count threshold for when a node is considered dense by setting xref:configuration/configuration-settings.adoc#config_db.relationship_grouping_threshold[`db.relationship_grouping_threshold`] configuration parameter.
270
268
271
269
`block` format::
272
-
A node is considered dense for a particular relationship type when it surpasses a certain internal size threshold, which typically happens at approximately 50 relationships of that type.
270
+
A node is considered dense for *a particular relationship type* when it surpasses a certain internal size threshold, which typically happens at approximately 50 relationships of that type.
273
271
However, it also depends on the number and size of properties connected to these relationships.
274
272
Therefore, a node may be dense for one relationship type (e.g., A) and sparse for another (e.g., relationship type B).
275
273
276
274
At commit time, relationships are inserted into the backing data structures in a manner that allows concurrent modification.
277
275
For example, multiple transactions can create, update, or delete relationships connected to the same dense nodes concurrently.
278
276
This process may in rare cases acquire additional exclusive locks in a sorted manner if necessary, to ensure data consistency.
279
277
280
-
In other words, relationship modifications acquire coarse-grained shared node locks when doing the operation in the transaction, and then acquire precise exclusive locks during commit.
278
+
In other words, relationship modifications acquire coarse-grained shared node locks when doing the operation in the transaction, and then acquire precise exclusive locks during the commit.
281
279
282
280
The locking is very similar for sparse and dense nodes.
283
281
The biggest contention for sparse nodes is the update of the degree (i.e. number of relationships) for the node.
0 commit comments