当前位置: 首页 > 知识库问答 >
问题:

Apache Ignite瘦JDBC驱动程序是否使用原子性=事务性的缓存

仲阳朔
2023-03-14

因此,我通过JDBC连接到GridGain集群,并且我只在由SQL语句创建的缓存上通过JDBC连接使用INSERT/UPDATE/DELETE语句。我的缓存是事务性的

CREATE TABLE IF NOT EXISTS FOO(
ID NUMBER(10,0),
NAME VARCHAR2(100),
PRIMARY KEY (ID)
) WITH "TEMPLATE=PARTITIONED,ATOMICITY=TRANSACTIONAL";

我的JDBC用法是这样的。在这里,我禁用自动提交并运行一些语句,然后手动提交。

connect.setAutoCommit(false);

PreparedStatement st1.executeUpdate();  
PreparedStatement st2.executeQuery();
...//other prepared statements executed
connect.commit();

我对集群中的两个数据节点执行了一些测试,没有发现问题。因此,根据定义,JDBC连接必须使用悲观锁,就像键值API一样。我的假设正确吗?我的JDBC使用是否安全?

共有1个答案

彭宏阔
2023-03-14

Ignite目前不支持SQL事务。

您可以使用SQL/JDBC来使用该表,但是,例如,如果您进行了一次大的更新,或者需要自动更改两个记录,则可能会记录部分更新,但不是全部更新。

如果需要事务,则需要使用key-value API,而不是SQL/JDBC。

 类似资料:
  • 在MongoDB中,写操作的原子性是在document级别上的,即使修改的是文档中的内嵌部分,写锁的级别也是document上。 当一个写操作要修改多个文档,每个文档的修改是原子性的。整个的写操作并不是原子性的,它可能和其他写操作产生交织。然而你可以使用$isolated隔离操作符来限制写操作,让它不与其他写操作交织。 不隔离性能更高,但是会产生数据的不确定性,隔离写操作,事务性更好。MongoD

  • 我使用的是Java8、Spark 2.1.1、Ignite2.5和BoneCP 0.8.0 结果出现以下异常: 提交脚本如下所示: 当使用“本地”Spark实例时,它使用think JDBC驱动程序连接到Ignite。有什么想法吗?

  • 与Bone CP不同,Hikari CP不再在连接池中提供准备好的语句缓存,因此现在需要在JDBC驱动程序中完成,对于MS SQL Server来说,这意味着我们需要转移到在驱动程序中提供准备好的语句缓存的JDBC驱动程序版本,mssql-jdbc 6.4.0(2018年1月发布)是第一个这样做的版本。 因此,从Hibernate 4.2+Bone CP 0.8.0+sqljdbc42 4.2.6

  • 问题内容: 我只想知道高速缓存驱动程序中分布式原子锁定的含义是什么? 问题答案: 分布式锁在多个来源中都有详细记录。 原子属性是指 不可分割的测试集 ,它应该是锁定请求的一部分。否则,两个竞争者可能会同时进行测试,然后以他们在资源上具有排他性为出发点而离开并离开。 由于这是必须的,因此您通常会简单地将其称为 分布式锁 。 现在,一些来源: Antirez(Redis的创建者)批评说,必须在实现客户

  • 那么,为什么Oracle JDBC驱动程序创建使用ISO-8859-1字节编码的字符串呢?如何在不改变数据库(也不转换字符串)的情况下获得UTF-8字节编码的字符串?我可以从驱动程序配置ou JMV args中更改它吗?