Skip to content

v2.11.0

Compare
Choose a tag to compare
@MarkoBarisic MarkoBarisic released this 13 Sep 17:48
b719f07

v2.11 - Sep 13, 2023

New features and improvements

  • The following configurational settings can now be changed during runtime:
    server name, query execution timeout, log level and the option to log to
    stderr. Use the following queries to set the configuration:
    SET DATABASE SETTING 'server.name' TO 'new-name';
    SET DATABASE SETTING 'query.timeout' TO '100';
    SET DATABASE SETTING 'log.level' TO 'TRACE';
    SET DATABASE SETTING 'log.to_stderr' TO 'true`;
    
    #1183
  • The default value of --bolt-server-name-for-init is now Neo4j/v5.11.0 compatible graph database server - Memgraph. #1183
  • When working at a snapshot isolation level, if a certain graph object is
    changed multiple times as a part of one of many parallel transactions, the
    delta chain tracking its changes becomes very long. Every other parallel
    transaction dependent on that object needs to access and process that delta
    chain to get its correct state, which can be very expensive regarding CPU
    usage. Now, Memgraph is caching delta chains of 128 or more changes that need
    to be frequently accessed, which eliminates the need of processing the chain
    and improves performance. If you would benefit from changing at what length
    the delta chain should be cashed, adjust the value of the
    --delta-chain-cache-threshold configuration flag.
    #1124
  • During recovery from a snapshot, the recovery of each graph object or property
    is no longer logged in the TRACE setting. The log now only indicates the
    recovery progress. #1054
  • Updating indices and constraints has been streamlined, significantly improving
    execution time for everybody making heavy use of them.
    #1159 #1142
  • Queries that build maps with multiple same-variable property lookups have been
    optimized. #1168
  • The batch update of properties improves performance when setting a large
    number of properties, as in this example:
    FOREACH (i in range(0, 1000000) | CREATE (n:Label {id:i}));                              
    
    CREATE INDEX ON :Label(id);                                                              
    
    FOREACH (i IN range(0, 1000000, 3) | MERGE (n:Label {id:i}) SET n += {prop2:"a1", prop3:"b2", prop4:"c3", prop5:"d4", prop6:"e5", prop7:"f6", prop8:"g7", prop9:"h8", prop10:"i9", prop11:"j10 q"});
    
    #1115
  • Setting properties is also improved by caching mappings of property name to
    internal property id. #1147
  • Performance has been improved for concurrent operations contending on the same
    node. #1187
  • When a query is executing in many iterations over the graph entities, the
    performance has been improved by 100% due to faster scanning of nodes, for example:
    UNWIND RANGE (1, 500) AS i CREATE ();
    MATCH (),(),() RETURN COUNT(*);
    
    #1127
  • The query engine is more performant as at all times it is scanning and
    expanding nodes instead of scanning both source and destination nodes and
    then expanding to the relationship between them.
    #1085
  • The expansion of node is no longer only done from left to right. Depending on
    the previous executions and how many relationships needed to be check on
    MERGE, the engine knows the fewest vector necessary to expand.
    #1110
  • Users can now call ToString() method on mgp::Value and Memgraph's data
    types when writing query modules using C++
    API
    .
    #1140
  • Trigger functions can now access deleted vertices from deleted edge when
    processed. #1209
  • When developing query modules using C++ API, you can now get the In and
    Out degrees of a node in O(1) time complexity. #1217
  • The C++ API now enables you to change relationship start (from) and end (to)
    nodes with mgp::Graph.SetFrom and mgp::Graph.SetTo methods.
  • SHOW INDEX INFO now displays index information in alphabetic order for
    easier orientation. #1178
  • The performance of DETACH DELETE query has been improved.
    #1078
  • The PROFILE query now generates a table with operators in the same order as
    in the plan constructed with the EXPLAIN query.
    #1024
  • The import of relationships in on-disk storage mode can be improved by
    switching to READ ONLY VERTEX MODE;.
    #1157.

Bug fixes

  • When projecting a map from a variable that happens to be null, the projection
    will have a null value instead of displaying an error.
    #1119
  • When using the C++ API you can now construct std::set of values (find unique
    values) by iterating over mgp::List as expected, and successfully perform
    any other operations dependent on the STL container requirements.
    #1210
  • The mgp::DispatcherGuard also works as expected now.
    #1225