代码之家  ›  专栏  ›  技术社区  ›  aol

Ignite write through和write behind已启用,但每个记录仍保留行

  •  1
  • aol  · 技术社区  · 7 年前

    我正在使用MS SQL Server进行第三方持久化。我的意图是将数据从数据库加载到数据网格,执行一些计算(分布式),并在最后将结果写回SQL Server。要处理的记录数为>因此,我不希望每个记录都保留记录,而是成批保留(例如,根据间隔或每隔X毫秒)。以下是我如何配置节点:

    ccfg.setReadThrough(true);
    ccfg.setWriteThrough(true);
    ccfg.setWriteBehindEnabled(true);
    ccfg.setWriteBehindBatchSize(10000);
    

    以下是执行计算和 put 要缓存:

    int i = 0;
    
    for (ComputePOJO computeItem : computeItems) {
        InvoiceItem invoiceItem = calcInvoiceItem();
    
        InvoiceItemKey key = new InvoiceItemKey(invoiceId, contractItemId);
        invoiceItem.setId(key);
        invoiceItemCache.put(key, invoiceItem);
    
        i++;
    
        if (i % 1000 == 0) {
            System.out.printf("> Computed %s InvoiceItems...%n", i);
        }
    }
    

    如果我在 呼叫并清点记录( SELECT COUNT(*) FROM InvoiceItem putAsync 但结果是一样的。

    我错过了什么?

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   aol    7 年前

    后来我意识到CacheAtomicityMode被设置为CacheMode。原子,更改为CacheAtomicityMode。事务性,不再逐行写入DB。