Databricks JDBC设置isolationLevel为READ_UNCOMMITTED仍无法实现脏读
Databricks JDBC读取SQL Server时READ_UNCOMMITTED隔离级别不生效问题
在Databricks中通过JDBC读取Microsoft SQL Server数据,想要模拟SQL的WITH (NOLOCK)特性,根据官方文档设置了isolationLevel选项为READ_UNCOMMITTED。但当在SQL Server上故意用排他锁锁定目标表后,Databricks的查询会一直挂起,直到表解锁才会执行,无法达到预期的脏读效果。
Databricks中使用的PySpark代码:
df = ( spark.read .format("jdbc") .option("isolationLevel", "READ_UNCOMMITTED") .option("url",jdbcUrl) .option("port", port) .option("user", user) .option("password", password) .option("database", db_name) .option('loginTimeout', 30) .option("dbtable",dbtable) .load()) df.write.format("delta").mode("overwrite").option("overwriteSchema",True).saveAsTable("test_table")
SQL Server上用于锁定目标表的查询:
BEGIN TRAN SELECT TOP (1) 1 FROM dbo.Test_Table WITH (TABLOCKX) WAITFOR DELAY '00:02:00' ROLLBACK TRAN;
请问是我的代码存在问题,还是JDBC驱动/连接存在限制?
内容的提问来源于stack exchange,提问作者Benjamin Borg
相关产品推荐
相关产品推荐

