当前位置: 首页 > 面试题库 >

通过JDBC访问表时如何检查表的锁定状态

邴星洲
2023-03-14
问题内容

我使用JDBC连接到Oracle表。(表1)仅执行插入操作,并且限制为:仅使用 “语句”

Java代码具有一个侦听器,用于侦听数据源。该数据被上载到表1,并且在表2读取表1的转换数据之后,要求使该过程接近实时。

我的问题:有没有一种方法可以找出表2正在访问(锁定)表1的时间,以便可以将数据保存在Java代码中。


问题答案:

首先,表不读取数据,某些“事物”必须从表1中读取数据并将其插入表2中。此外,从表1中读取内容可能不会锁定表1的全部,它可能会锁定某些记录,但是不是整个桌子。看看这里,并在这里为如何找到锁在Oracle中的信息。然而:

更好的选择是在更高级别进行同步。您可以在Java代码和更新表2之间进行选择。
这可以基于更新表2的“事物”以及所使用的平台,使用适当的同步机制(信号量,互斥量,java锁等)来完成。如果无法进行专门的同步,则可以在数据库本身中实现锁定。

一个(非常简单)的实现使用lock带有列owner和的表lockID。然后,为每个参与者提供唯一的标识符,并使用以下SQL语句声明锁定:

    更新锁集owner = <我的唯一标识符>,其中owner为null,lockID = <lock id>

    从锁中选择所有者,其中lockID = <lock id>

owner对应于参与者的唯一标识符成功要求保护的锁定。要取消锁定,只需将其设置为null

尽管简单,但这种方法仍然存在问题,需要弄清楚何时释放锁,如果不按时释放(或触摸)锁,则会使锁失效,如果争夺高昂的锁,则可能导致饥饿。

如果您确实想要实现近乎实时的性能,则更好的选择是消除数据库。任何数据库的变量(缓存,维护后台线程,本地优化等)太多,无法实现一致的性能。旨在实现近实时性能的系统必须使用针对特定平台量身定制的异步文件IO,并且可能需要使用非垃圾收集语言,以便可以控制内存分配和释放。



 类似资料:
  • 问题内容: 在嵌入式访问vb编辑器的帮助下,我编写了一个小代码来分析数据库的字段值,并希望最终查看打开的访问内的表中的记录集。作为新手,我只能使用Debug.Print来显示字段名称。谁能告诉我我可以使用哪些语句/命令执行SQL String以便查看带有值的结果记录集? 问题答案: 据我所知,无法显示包含记录集的VBA实例的数据表。如果记录集的源是strQSL,则可以使用结果创建一个表,然后打开该

  • 问题内容: 我正在寻找一种在Java App(使用JDBC)中打开Access MDB文件的方法。 快速的Google搜索建议我为此需要JDBC-ODBC Bridge。 这是否意味着我需要配置要在其上运行应用程序的每个系统,以便为要打开的MDB提供ODBC DSN? 还有一个问题(因为我以前从未使用过ODBC):通信是通过某种套接字(以客户机/服务器方式)还是通过方法/函数调用(例如嵌入Derb

  • 我在Ubuntu 15.10和Freebsd上使用PHP 7 (5.6.11)和postgresql 9.4。 我的代码使用“for update”选项从表中按id选择单行。有时(数百个查询中的一个)此查询执行时间很长,大约20-90秒。我的代码在大约30个线程中工作。 据我所知,“从表中选择*进行更新”只锁定表中的单行,只有当另一个进程已经选择了这一行时,我才能得到这样的行为。我是对的吗?但是它

  • 问题内容: 有没有一种方法可以检测MySQL中的锁定表?我的意思是表被命令锁定。 (请注意,有兴趣检测使用来获取的 命名 锁的读者应改为从get_lock显示显示所有当前锁。) 问题答案: 显示每个表的状态及其锁定。 对于命名锁,请查看显示来自get_lock的所有当前锁

  • 我正在将 Azure 数据砖与数据砖运行时 5.2 和 Spark 2.4.0 配合使用。我以两种不同的方式设置了外部 Hive 表: - 数据砖增量表,其中数据存储在 Azure 数据湖存储 (ADLS) 第 2 代中,该表是使用位置设置创建的,该位置设置指向 ADLS 第 2 代中的已装载目录。- 一个常规的数据帧,作为表保存到 ADLS Gen 2,这次不使用挂载,而是使用我使用 spark

  • 在有向图的广度优先搜索(可能的循环)中,当一个节点退出队列时,其所有尚未访问的子节点都将进入队列,并且该过程将继续,直到队列为空为止。 有一次,我以另一种方式实现它,其中节点的所有子节点都排队,当节点出队时,检查访问状态。如果之前访问过正在退出队列的节点,则该节点将被丢弃,并继续到队列中的下一个节点。 但结果是错的。维基百科还说 深度优先搜索。。。。。。非递归实现类似于广度优先搜索,但在两个方面与