數據遷移后sql執行速度慢
更新時間 2023-07-04 19:44:45
最近更新時間: 2023-07-04 19:44:45
分享文章
本文主要介紹MySQL數據遷移后sql執行速度慢的原因分析及解決方案。
場景描述
數據遷移至MySQL實例后,sql語句執行明顯慢于原數據庫。
原因分析
數據遷移至MySQL實例后,第一次執行的sql比在原數據庫執行的性能差, 是由MySQL的buffer_pool機制決定的:sql語句第一次執行時,由于執行計劃和查詢數據等信息未加載至buffer_pool中,需要生成執行計劃,并從磁盤加載數據,磁盤IO讀寫性能明顯差于內存buffer_pool的讀寫性能,因為第一次執行速度會慢很多;sql第一次執行完后,讀取的數據會被存放于內存的buffer_pool中,當第二次執行相同語句時,數據直接從buffer_pool中讀取,因此數據的訪問速度明顯快于第一次從磁盤訪問數據速度。
該場景中,在原數據庫中執行sql讀取的數據一般來源于buffer_pool,訪問速度極快。當數據遷移到云上MySQL時,第1次執行同樣的sql語句,需要從磁盤讀取,就會訪問較慢,當再次執行相同sql會從內存讀取,執行速度就會恢復正常。
解決方案
該場景屬于正常現象,在同一個數據庫中,第1次執行sql時很慢,但再次執行由于數據已經被加載到buffer_pool中,執行速度會明顯提升。