そのため、データを新しいデータベースにインポートしようとしているときに、多数のデッドロック例外が発生しました。それらを回避する方法と、これらのデッドロックを引き起こすしきい値を知りたいです。
インポート スクリプトは、REST バッチ API を呼び出してフォロワーを追加します。各ノードのすべての follow 関係が 1 つのバッチにまとめられます。
START left=node:node_auto_index(uname={from}),
right=node:node_auto_index(uname={to})
CREATE left-[r:FOLLOWS]->right
2200 ノードで 5340 の関係を作成しています。ほとんどのノードは他のいくつかのノードをフォローしていますが、一部のアクティブなノードは約 100 の他のノードをフォローしています。
特定のノードの次の関係をすべて 1 つのバッチでバッチ挿入しようとしているため、デッドロックが発生していると思います。バッチAPIトランザクションにラップされているため、デッドロックですか?バッチから取り出した場合、デッドロックは発生しませんか?
この種のデッドロックは、本番環境でも通常の使用状況でも発生しますか? 日常の使用では、単一のノードのすべての関係を一括インポートすることはありませんが、2 人のユーザーが同時に同じユーザーをフォローしようとする可能性があると思います。
とにかく、回避するにはどうすればよいですか?また、これが毎日の本番環境で使用されないようにするにはどうすればよいですか?