Mysql
並行執行查詢
我在 mysql 5.7.18 ubuntu 伺服器 16.04 上執行一個 sql 腳本,它在一個表中執行大量更新。50k 更新中的每一個都需要不到一秒的時間,但總執行時間非常長(>20m)。
我可以從 PROCESSLIST 中看到只有一個執行緒正在執行並且正在逐一處理更新。
如何使用多個執行緒來加快執行速度?
因為您寫了“每個…”,所以聽起來您正在更新各個行。您是否嘗試過編寫 SQL,而不是一次執行一行,以便讓數據庫在一個 SQL 語句中更新許多行?與手動嘗試多執行緒相比,這可能會為您帶來更好的性能。
從書:
High Performance MySQL - 2nd Ddition
- 2008MySQL 不能在多個 CPU 上並行執行單個查詢。這是一些其他數據庫伺服器提供的功能,但不是 MySQL。我們提到它,這樣您就不會花費大量時間試圖弄清楚如何在 MySQL 上獲得併行查詢執行!
https://www.oreilly.com/library/view/high-performance-mysql/9780596101718/ch04.html
來自
Percona
部落格 - 2019 年 1 月 23 日最後:MySQL 8.0.14 具有(目前有限)執行並行查詢執行的能力。在撰寫本文時,它僅限於
select count(*) from table
查詢和檢查表查詢。