While executing transaction, OVSDB needs to find a row where changes need to be applied. Currently, if condition is not a match on a row UUID, linear lookup through the table will be performed. See the implementation of 'ovsdb_query()' function. However, ovsdb-server maintains hash tables for client-side indexes specified in the database schema, and these can be used instead of a linear lookup, if condition contains exact match on one of the indexed columns. Though conventional database utilities based on C and Python IDL are using UUIDs in most cases in transaction, some other clients may perform transactions with arbitrary conditions. So, it would be nice to have this use case better optimized. Example of operation that triggers an indexed lookup: "where":[["_uuid","==",["uuid","<UUID of the logical switch row>"]]], "mutations":[["ports","insert",["set",[["named-uuid","rowUUID"]]]]], "op":"mutate","table":"Logical_Switch" And operation that triggers a linear lookup even if the 'name' will be a client-side index according to a database schema ("indexes": [["name"]]): "where":[["name","==","<host-name>"]], "mutations":[["ports","insert",["set",[["named-uuid","rowUUID"]]]]], "op":"mutate","table":"Logical_Switch"
This bug did not meet the criteria for automatic migration and is being closed. If the issue remains, please open a new ticket in https://issues.redhat.com/browse/FDP