gpt4 book ai didi

java - 让事务包装 App Engine 中的每个数据存储事件是否存在任何性能风险 - 读取和写入?

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:39 25 4
gpt4 key购买 nike

根据 App Engine 文档,您可以像这样在事务中包装 datstore 事件:

import javax.jdo.Transaction;

import ClubMembers; // not shown

// ...
// PersistenceManager pm = ...;

Transaction tx = pm.currentTransaction();

try {
tx.begin();

ClubMembers members = pm.getObjectById(ClubMembers.class, "k12345");
members.incrementCounterBy(1);
pm.makePersistent(members);

tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
}

如果您不仅将每个写入事件都包装在事务中,而且还将每个读取事件都包装在事务中,是否会对应用程序的性能产生负面影响?

最佳答案

在事务中执行读取和写入肯定会产生开销。

在很多情况下它没有意义 - 如果您只是从数据存储中读取一个值,那么将单个读取操作包装在一个事务中没有任何优势。当您有一组需要一起执行的多个操作时保存事务(例如您在问题中包含的获取、增量、持久示例)。 GAE 文档包括关于 uses for transactions 的部分您可能会觉得有帮助。

此外,批处理数据存储操作通常很方便,可以最大限度地减少应用程序和数据存储之间的往返次数。如果您将每个操作都包装在一个事务中,那么您将不得不单独发送每个事务(这会慢很多,尤其是如果您同步发出每个请求)。

关于java - 让事务包装 App Engine 中的每个数据存储事件是否存在任何性能风险 - 读取和写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com