簡體   English   中英

Perl DBD :: mysql'mysql_use_result'可以在插入另一個表時使用嗎?

[英]Perl DBD::mysql 'mysql_use_result' OK to use while inserting to another table?

我正在mysql中進行大型聯接,然后對結果數據進行處理並將其寫入另一個表。 現在,我正在使用默認的mysql_store_result,但是查詢后的$ sth-> execute()大約需要20分鍾才能運行。 我想切換到mysql_use_result,因為我一次只作用於一行。

但是,文檔的這一部分讓我感到困擾:

該屬性強制驅動程序使用mysql_use_result而不是mysql_store_result。 前者速度更快,內存消耗更少,但往往會阻塞其他進程。 (這就是為什么mysql_store_result是默認值的原因。)

我一次要處理一行,然后將結果存儲在數組中。 每500個條目,我都會在一個單獨的表中進行INSERT操作。 從mysql_use_result循環中可以這樣做嗎? 如果為INSERT定義新的數據庫處理程序,可以嗎?

您應該使用單獨的數據庫連接來進行插入。

但是,我相信您引用的警告說明是在談論阻止服務器上的內容,而不僅僅是阻止特定客戶端上的內容。

mysql文檔更加清晰:

如果對客戶端的每一行都進行了大量處理,或者將輸出發送到用戶可以在其中輸入^ S的屏幕(停止滾動),則不應使用mysql_use_result()。 這將束縛服務器,並防止其他線程更新正在從中獲取數據的任何表。

(我認為這是一種誇大的說法,當mysql更像是一種玩具SQL實現時,可能已經寫回來了。)

暫無
暫無

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

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