You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:33:15