簡體   English   中英

為什么MySQL命令行比Python這么快?

[英]Why is MySQL command line so fast vs. Python?

我需要將數據從MySQL遷移到Postgres。 編寫連接到MySQL和Postgres的腳本很容易,在MySQL一側運行一個select並在Postgres一側插入,但是它的速度很慢(我有+ 1M行)。 將數據寫入平面文件然后導入它要快得多。

MySQL命令行可以非常快速地下載表並將其輸出為制表符分隔的值,但這意味着執行腳本外部的程序(通過將其作為shell命令執行並將輸出保存到文件中,或者直接從腳本中讀取)標准輸出)。 我正在嘗試使用Python而不是MySQL客戶端下載數據。

有誰知道MySQL命令行執行什么步驟和調用來查詢大型數據集並將其輸出到stdout? 我以為客戶端可能是C語言,並且應該比Python快得多,但是MySQL的Python綁定本身就是C語言,所以...有什么想法嗎?

我認為問題在於您將每行插入一個單獨的事務中(這是在運行SQL查詢而不顯式啟動事務時的默認行為)。 在這種情況下,數據庫必須在每個INSERT上將更改寫入(刷新)到磁盤。 它可能比在單個事務中插入數據慢100倍。 嘗試在導入數據之前運行BEGIN之后嘗試COMMIT

暫無
暫無

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

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