如何在不等待的情况下锁定DB2中的表

如何在不等待的情况下锁定DB2中的表,db2,locking,wait,db2-luw,Db2,Locking,Wait,Db2 Luw,我希望在DB2(版本11)中锁定一个表,并且我不希望其他人在尝试更新锁定的表时等待我的锁定。 (引发异常或返回错误代码) 我使用了以下命令: 在独占模式下锁定表MYTABLE 但其他连接总是等待 那么有什么方法可以停止等待吗?对于Linux/Unix/Windows上的Db2,如果使用“锁表…”。。。在独占模式下,其他连接将等待您提交/回滚 对于Linux/Unix/Windows上的Db2,默认情况下,其他连接将等待秒(默认值=-1=永远等待),或者其他应用程序在其连接中通过设置当前锁定超时配

我希望在DB2(版本11)中锁定一个表,并且我不希望其他人在尝试更新锁定的表时等待我的锁定。 (引发异常或返回错误代码)

我使用了以下命令: 在独占模式下锁定表MYTABLE

但其他连接总是等待


那么有什么方法可以停止等待吗?

对于Linux/Unix/Windows上的Db2,如果使用“锁表…”。。。在独占模式下,其他连接将等待您提交/回滚


对于Linux/Unix/Windows上的Db2,默认情况下,其他连接将等待秒(默认值=-1=永远等待),或者其他应用程序在其连接中通过
设置当前锁定超时
配置的任何内容(可以包括设置NOT wait或其他值)或者在另一个应用程序的Db2客户机配置中。见文件

有关客户端配置选项(db2cli.ini、db2dsdriver.cfg、连接属性等)的详细信息,请参阅Db2知识中心

重要的是要理解,要么是其他应用程序需要调整它们的锁超时(无论是在代码中还是在Db2客户机配置中),要么是数据库参数LOCKTIMEOUT将决定它们的等待时间

因此,简言之,如果希望其他应用程序不等待,则必须为此目的对这些应用程序进行编程/配置,或者必须适当配置数据库配置锁定超时,或者两者都进行配置


实际上,这意味着您需要避免以独占模式(隐式或显式)锁定表,或者需要在最安静的时间执行此操作,并使锁定的持续时间尽可能短。特别是,您的工作不能告诉其他Db2连接如何调整其锁定等待行为

对于Linux/Unix/Windows上的Db2,如果使用“锁表…”。。。在独占模式下,其他连接将等待您提交/回滚


对于Linux/Unix/Windows上的Db2,默认情况下,其他连接将等待秒(默认值=-1=永远等待),或者其他应用程序在其连接中通过
设置当前锁定超时
配置的任何内容(可以包括设置NOT wait或其他值)或者在另一个应用程序的Db2客户机配置中。见文件

有关客户端配置选项(db2cli.ini、db2dsdriver.cfg、连接属性等)的详细信息,请参阅Db2知识中心

重要的是要理解,要么是其他应用程序需要调整它们的锁超时(无论是在代码中还是在Db2客户机配置中),要么是数据库参数LOCKTIMEOUT将决定它们的等待时间

因此,简言之,如果希望其他应用程序不等待,则必须为此目的对这些应用程序进行编程/配置,或者必须适当配置数据库配置锁定超时,或者两者都进行配置


实际上,这意味着您需要避免以独占模式(隐式或显式)锁定表,或者需要在最安静的时间执行此操作,并使锁定的持续时间尽可能短。特别是,您的工作不能告诉其他Db2连接如何调整其锁定等待行为

也许其他用户可以将未提交的读取
与UR一起使用

或者,您也可以在共享模式下使用
而不是
独占


其他用户是否可以将未提交的读取
与UR一起使用

或者,您也可以在共享模式下使用
而不是
独占


它是Linux/Unix/Windows上的Db2 v11还是Z/OS大型机上的Db2 v11?@mao:它是在Linux上的,您可以控制自己的活动,但其他应用程序可以控制自己的活动。他们必须设置自己的锁定超时时间。如果您不想让他们等待某个对象,那么该对象必须停止存在,因为他们知道这一点——如果重命名是您的一个选项,那么这可能是更好的路径。您还可以使用执行此操作时要删除的表的视图或别名查看应用程序。它是Linux/Unix/Windows上的Db2 v11还是Z/OS大型机上的Db2 v11?@mao:它在Linux上。您可以控制自己的活动,但其他应用程序可以控制自己的活动。他们必须设置自己的锁定超时时间。如果您不想让他们等待某个对象,那么该对象必须停止存在,因为他们知道这一点——如果重命名是您的一个选项,那么这可能是更好的路径。您还可以查看使用视图或别名的应用程序,这些视图或别名是执行此操作时要删除的表。很抱歉,我的经验不好。必须在运行LOCK TABLE命令之后或之前执行SET CURRENT LOCK TIMEOUT命令?我试着在独占模式下使用下面的db2+c锁表MYTABLE db2设置当前锁超时不等待,其他连接不等待,但成功完成,这是因为我的糟糕经验。必须在运行LOCK TABLE命令之后或之前执行SET CURRENT LOCK TIMEOUT命令?我尝试在独占模式下使用下面的db2+c锁表MYTABLE db2设置当前锁超时不等待,其他连接不等待但成功完成