This patch set contains a few bug fixes for transaction processing and an optimization.
The first patch is just a bug fix. The 2nd and 3rd are also bug fixes, but they only affect performance, not correctness. The last two patches intruduce a new functionality to reuse the column diffs stored in the file during transaction replay. All in all this patch set gives about 4x performance improvement for transaction processing after reading from the storage, i.e. significantly speeds up initial database file read after restart and improves performance of transactions in clustered databases (storage_read from raft module). For example, with this change applied, initial read of OVSDB file containing 136K transactions for large OVN port groups and address sets on my laptop takes 11 seconds vs 43 seconds without. Ilya Maximets (5): ovsdb: Fix incorrect sharing of UUID and _version columns. ovsdb: transaction: Avoid diffs for different type references. ovsdb: transaction: Don't try to diff unchanged columns. ovsdb: Preserve column diffs read from the storage. ovsdb: transaction: Calculate added/removed from diff. lib/ovsdb-data.c | 26 +++++++++++ lib/ovsdb-data.h | 1 + lib/ovsdb-types.h | 12 +++++ ovsdb/execution.c | 14 ++++-- ovsdb/file.c | 22 ++++++--- ovsdb/ovsdb-server.c | 7 ++- ovsdb/row.h | 2 + ovsdb/table.c | 6 ++- ovsdb/transaction.c | 104 ++++++++++++++++++++++++++++++++----------- ovsdb/transaction.h | 6 ++- tests/test-ovsdb.c | 2 +- 11 files changed, 159 insertions(+), 43 deletions(-) -- 2.43.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
