我在尝试对连接到在它们之间具有外键约束的表的缓存上使用 write-behind 时遇到问题。似乎后写机制不是以确定的顺序执行更新/插入,而是试图以某种未知的顺序连续推送每个缓存收集的所有更改。但是由于我们在表中有外键,所以操作的顺序很重要,所以应该首先插入/更新父对象,然后才插入/更新子对象(否则从数据库中抛出外键违规)。
当前的实现似乎正在尝试在试错的基础上解决此问题org.apache.ignite.cache.store.jdbc.CacheAbstractJdbcStore:888
(因此,“子”缓存将定期重试刷新,直到“父”缓存首先被刷新。这最终将导致数据进入数据库,但这也意味着在复杂的分层表的情况下会进行很多不成功的尝试,直到“找到”正确的顺序。这会导致性能不佳和数据库不必要的脱壳。
您对如何规避此问题有任何建议吗?
(最初我尝试使用直写,但它导致性能非常差,因为CacheAbstractJdbcStore
似乎为每个插入/更新操作打开了一个新的准备好的语句。)