我有一個MySQL服務器與許多innodb表。 我有一個背景腳本,做了很多的刪除/插入帶有一個要求:它刪除許多百萬行從表2中,然後插入許多百萬行使用來自表1的數據表2:兩個MySQL請求在同一時間 - 性能問題
INSERT INTO table 2 (date)
SELECT date from table 1 GROUP BY date
(該請求實際上更復雜,但是它顯示了我正在做什麼樣的請求)。同時,我將運行第二個後臺腳本,它可以執行大約一百萬次INSERT或UPDATE請求,但是分開執行(我的意思是,我執行第一個更新查詢,然後執行插入查詢等)。 ...)在表3中。
我的問題是,當一個腳本正在運行,它是快速的,就像我們說每個需要30分鐘,所以總共1h。但是,當兩個腳本同時運行時,它非常慢,就像需要5小時,而不是1小時。
所以首先,我想知道什麼會導致這種情況?是因爲IO性能? (如mysql正在寫兩個不同的表,所以它在兩者之間切換很慢?)
我該如何解決這個問題?如果我可以說,當我的第二個後臺腳本正在運行時,大的INSERT查詢已暫停,那麼這將非常棒,例如......但我找不到像這樣做的方法。
我不是MySQL管理專家。如果您需要更多信息,請告訴我!
謝謝!
更多的執行意味着更多的CPU工作,大多數內存分配也在堆棧上發生,所以推送和彈出變得非常耗時。大多數人確保腳本1在腳本2完成之前完成。想象一下,開啓10個非常消耗內存的視頻遊戲,它們需要更多的時間來完成它們與內存和CPU的關係,而不是一次打開1個遊戲。你可以做一些優化,但這可能不值得。每次只需在每臺機器上運行一個腳本。 – Jonast92
這是[tag:mysql]或[tag:sql-server],但不是兩者。一旦你確定了它是什麼,你應該問[dba.se] –
Jonast92:如果這是來自CPU /內存,你認爲使用nice來設置我的腳本優先級可以幫助嗎?是的,這通常是我想要做的,但這並不總是可能的。這是第一個腳本(不緊急),需要5-6小時,第二個腳本(非常緊急),需要30分鐘......所以我不能總是等待...... – user3017110