标签: transactions

ACID和数据库交易?

ACID和数据库事务之间有什么关系?

ACID是否提供数据库事务还是同样的事情?

有人可以启发这个话题.

database transactions acid

152
推荐指数
6
解决办法
12万
查看次数

是否有API来获得银行交易和银行存款余额?

我正在使用CHASE银行.(还有美国银行),如果可以,我想得到我的银行交易和余额.那有API吗?在PHP或JAVA?如果是这样,请让我知道如何获得它们.

transactions bank

148
推荐指数
3
解决办法
16万
查看次数

.net中的交易

在C#.Net 2.0中进行事务的最佳实践是什么?应该使用哪些类?需要注意的缺陷是什么等等.所有提交和回滚的东西.我刚刚开始一个项目,我可能需要在将数据插入数据库时​​进行一些事务.任何有关交易的基本内容的回复或链接都是受欢迎的.

.net c# transactions

141
推荐指数
2
解决办法
18万
查看次数

不可重复读和幻像读有什么区别?

不可重复读和幻读之间有什么区别?

我已经阅读了维基百科隔离(数据库系统)文章,但我有一些疑问.在下面的例子中,会发生什么:不可重复的读取幻像读取

交易A.
SELECT ID, USERNAME, accountno, amount FROM USERS WHERE ID=1
Run Code Online (Sandbox Code Playgroud) OUTPUT:
1----MIKE------29019892---------5000
Run Code Online (Sandbox Code Playgroud) 交易B.
UPDATE USERS SET amount=amount+5000 where ID=1 AND accountno=29019892;
COMMIT;
Run Code Online (Sandbox Code Playgroud) 交易A.
SELECT ID, USERNAME, accountno, amount FROM USERS WHERE ID=1
Run Code Online (Sandbox Code Playgroud)

另一个疑问是,在上面的例子中,应该使用哪个隔离级别?为什么?

database oracle transactions transaction-isolation isolation-level

137
推荐指数
7
解决办法
8万
查看次数

如何解决MongoDB中缺少事务的问题?

我知道这里有类似的问题,但如果我需要事务或使用原子操作两阶段提交,他们要么告诉我切换回常规RDBMS系统.第二种解决方案似乎是最佳选择.第三个我不想遵循,因为似乎很多事情都可能出错,我无法在各个方面进行测试.我很难重构我的项目来执行原子操作.我不知道这是否来自我有限的观点(到目前为止我只使用过SQL数据库),或者它是否真的无法完成.

我们想在我们公司试用MongoDB.我们选择了一个相对简单的项目 - 短信网关.它允许我们的软件向蜂窝网络发送SMS消息,并且网关执行肮脏的工作:实际上通过不同的通信协议与提供商进行通信.网关还管理消息的计费.申请服务的每个客户都必须购买一些积分.发送消息时,系统会自动降低用户的余额,如果余额不足,则拒绝访问.另外,由于我们是第三方SMS提供商的客户,我们也可能拥有自己的余额.我们也必须跟踪这些.

如果我减少了一些复杂性(外部计费,排队短信发送),我开始考虑如何用MongoDB存储所需的数据.来自SQL世界,我将为用户创建一个单独的表,另一个用于SMS消息,另一个用于存储有关用户余额的事务.假设我为MongoDB中的所有人创建了单独的集合.

想象一下SMS发送任务,在这个简化的系统中执行以下步骤:

  1. 检查用户是否有足够的余额; 如果没有足够的信用,请拒绝访问

  2. 使用详细信息和成本在SMS集合中发送和存储消息(在实时系统中,消息具有status属性,任务将接收它以进行传递,并根据SMS的当前状态设置SMS的价格)

  3. 通过发送消息的成本减少用户的余额

  4. 在事务集合中记录事务

那现在有什么问题?MongoDB只能在一个文档上进行原子更新.在之前的流程中,可能会发生某种错误,并且消息会存储在数据库中,但用户的余额未更新和/或未记录事务.

我提出了两个想法:

  • 为用户创建单个集合,并将余额作为字段,用户相关事务和消息存储为用户文档中的子文档.因为我们可以原子地更新文档,这实际上解决了事务问题.缺点:如果用户发送许多SMS消息,文档的大小可能会变大,并且可能达到4MB的文档限制.也许我可以在这种情况下创建历史文档,但我认为这不是一个好主意.另外,我不知道如果我将越来越多的数据推送到同一个大文档,系统会有多快.

  • 为用户创建一个集合,为事务创建一个集合.可以有两种交易:具有正余额变化的信用购买和具有负余额变化的消息.交易可能有一个子文件; 例如,在发送消息中,SMS的详细信息可以嵌入到事务中.缺点:我没有存储当前的用户余额,因此每次用户尝试发送消息时都要计算它,以判断消息是否可以通过.我担心随着存储事务数量的增加,这种计算会变慢.

我对选择哪种方法有点困惑.还有其他解决方案吗?我在网上找不到关于如何解决这些问题的最佳实践.我想许多试图熟悉NoSQL世界的程序员一开始就面临着类似的问题.

transactions mongodb

136
推荐指数
8
解决办法
7万
查看次数

在MS SQL Server Management Studio中处理事务的最佳方法

假设我有一个SQL语句,它在语法和语义上都是正确的,因此它会执行.

在Management Studio(或任何其他查询工具)中,我如何测试SQL语句,如果我注意到它们破坏了某些内容,则回滚(在单独的查询中?)

sql t-sql transactions

122
推荐指数
2
解决办法
17万
查看次数

javax.transaction.Transactional vs org.springframework.transaction.annotation.Transactional

我不明白注释javax.transaction.Transactional和实际区别是什么org.springframework.transaction.annotation.Transactional

org.springframework.transaction.annotation.Transactional延伸javax.transaction.Transactional还是他们有完全不同的含义?应该何时使用它们?@Transactinal服务层中的Spring 和DAO中的javax

谢谢回答.

java spring hibernate transactions jta

120
推荐指数
4
解决办法
4万
查看次数

为"卡住的"Mysql表修复"超出锁定等待超时;尝试重新启动事务"?

从脚本我发送了数千次这样的查询到我的本地数据库:

update some_table set some_column = some_value
Run Code Online (Sandbox Code Playgroud)

我忘了添加where部分,因此同一列被设置为表中所有行的相同值,这已经完成了数千次并且列已被索引,因此相应的索引可能更新了很多次.

我注意到有些事情是错的,因为它花了太长时间,所以我杀了剧本.从那时起我甚至重新启动了我的计算机,但是表格中存在一些问题,因为简单查询需要很长时间才能运行,当我尝试删除相关索引时,它会失败并显示以下消息:

Lock wait timeout exceeded; try restarting transaction
Run Code Online (Sandbox Code Playgroud)

这是一个innodb表,因此卡住交易可能是隐含的.如何修复此表并从中删除卡住的事务?

mysql transactions

116
推荐指数
7
解决办法
31万
查看次数

在JPA/Hibernate中正确使用flush()

我正在收集有关flush()方法的信息,但我不清楚何时使用它以及如何正确使用它.根据我的阅读,我的理解是持久化上下文的内容将与数据库同步,即发出未完成的语句或刷新实体数据.

现在,我得到下列设想两个实体AB(在一比一的关系,而不是由JPA执行或模拟).A有一个复合PK,它是手动设置的,还有一个自动生成的IDENTITY字段recordId.这recordId应该B作为外键写入实体A.我正在保存AB进行单笔交易.问题是自动生成的价值A.recordId是不可用的事务中,除非我做的一个显式调用em.flush()打完电话后em.persist()A.(如果我有一个自动生成的IDENTITY PK,那么该值将在实体中直接更新,但这不是这里的情况.)

可以em.flush()在一个事务中使用时造成什么伤害?

java persistence hibernate jpa transactions

107
推荐指数
3
解决办法
15万
查看次数

何时使用SELECT ... FOR UPDATE?

请帮我理解背后的用例SELECT ... FOR UPDATE.

问题1:以下是SELECT ... FOR UPDATE应该何时使用的一个很好的例子?

鉴于:

  • 客房[ID]
  • 标签[id,name]
  • room_tags [room_id,tag_id]
    • room_id和tag_id是外键

该应用程序希望列出所有房间及其标签,但需要区分没有标签的房间与已移除的房间.如果未使用SELECT ... FOR UPDATE,可能发生的情况是:

  • 原来:
    • 房间包含 [id = 1]
    • 标签包含 [id = 1, name = 'cats']
    • room_tags包含 [room_id = 1, tag_id = 1]
  • 线程1: SELECT id FROM rooms;
    • returns [id = 1]
  • 线程2: DELETE FROM room_tags WHERE room_id = 1;
  • 线程2: DELETE FROM rooms WHERE id = 1;
  • 线程2:[提交交易]
  • 线程1: SELECT tags.name FROM room_tags, tags WHERE room_tags.tag_id = 1 AND tags.id …

mysql sql sql-server transactions select-for-update

106
推荐指数
2
解决办法
8万
查看次数