簡體   English   中英

我可以設置modin的並行read_sql函數的隔離級別嗎?

[英]Can I set the isolation level of modin's parallel read_sql function?

我有一些 python 代碼,我試圖用它來使用 sqlalchemy 和 modin 從我的數據庫中並行讀取未提交的內容。 我嘗試將函數調用為: df = pd.read_sql("select * from my_table", uri_string, params={'isolation_level': 'READ UNCOMMITTED'}) 但是,我看到生成的查詢在沒有隔離級別的情況下提交到我的數據庫。 在調用 read_sql 之前,有沒有人能夠在不創建 sqlalchemy 引擎的情況下注入隔離級別?

編輯:與熊貓不同,modin 的實現允許 read_sql 並行運行。 該實現的一部分意味着我編寫的任何查詢都將被包裝到幾個子查詢中,例如select * from (select * from my_table) limit 100 offset 200; . 因此,語句級隔離不在表中,無需調整此實現。 此外,這個實現需要一個 sqlalchemy URI 字符串,而不是一個可以被許多工作人員序列化的引擎或連接。 因此,如果我要從連接字符串設置隔離級別,我將需要知道如何在 URI 字符串中注入隔離級別參數。

Db2-LUW 的每個數據庫事務都有一個隔離級別,無論您是否明確表示 - 總是有一些默認值。 但是,如果您連接到 Db2-for-i (as/400),這可能不是真的。

您可以選擇更改隔離級別的方式和位置。

對於偶爾的查詢,您可以使用語句級隔離(只要工具允許),其中 SELECT 語句本身附加了一個可選子句以僅指定該語句的隔離。 例如select whatever from table where... with UR (uncommitted read)。

如果您希望所有動態 SQL 語句具有相同的隔離級別(其中有含義),那么您可以在連接到數據庫時指定隔離。 對於使用 CLI 接口的 python(即 cpython),您可以在連接字符串上使用 CLI 設置;TxnIsolation=1; (對於 UR),或通過帶有參數IsolationLevel=... db2dsdriver.cfgdb2cli.ini (如果使用)中的數據源定義。 更多細節在這里

如果您使用與特定隔離級別綁定的靜態包調用(直接或間接)任何 Db2 例程,那么這將覆蓋您之前可能設置的任何其他設置,因此請注意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM