我們最近將我們的資料庫轉移到了一個集中的服務器上,以便整個團隊使用相同的資料源,而不是使用資料庫的轉儲,并在 docker 容器中旋轉它。
最近,我注意到,當在服務器上多次執行相同的SQL查詢時,會回傳不同的結果,而當在docker中使用本地備份時,多次執行的結果是相同的。
結果的長度是相同的,但是我們需要一個確定的查詢結果,而服務器沒有提供這個結果。
這是我在jupyter筆記本中用來比較這兩個查詢的代碼:
這是我在jupyter筆記本中用來比較這兩個查詢的代碼。
sql_query = " "
SELECT * FROM reports.consumption
WHERE name LIKE '%electricity%%')
""
server_df = pd.read_sql(sql_query,
con="<my_credentials_to_server>")
display(server_df.tail(10)
docker_df = pd.read_sql(sql_query,
con="<my_credentials_to_local_docker>")
display(docker_df.tail(10)
當多次執行這段代碼時,我在資料庫的docker版本中收到相同的尾巴,但在服務器上沒有。為什么會出現這種情況?是否涉及一些隨機性?
uj5u.com熱心網友回復:
你的SQL查詢并沒有強制執行任何順序。這意味著DB引擎可以自由選擇任何。如果在兩個部署中以不同的順序回傳相同的結果,你的tail將可能是不同的。
我可以想象有很多原因導致同一資料庫的兩個部署可能會以不同的順序回傳相同的結果,包括:
我建議添加一個ORDER BY子句來對所有部署強制執行一個特定的順序,或者在Python中對你的資料框架進行排序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/332036.html
標籤:
