簡體   English   中英

InnoDB Small更新非常慢,性能問題

[英]InnoDB Small update very slow, performance issue

我有一個更新腳本,它每晚都會更新我的數據庫。

這是一個約有1萬個項目的小型數據庫。 對於每個表,更新速度很快,但只有一個。 在連接表上這非常慢。

聯接表是項目表和類型表之間的鏈接,如下所示:

Item.Code <-> JoinTable.RefCode (VARCHAR 30), JoinTable.IdType(int 11) <-> Type.id

引擎是InnoDB。 在引用的表上有兩個外鍵,在兩列上有一個唯一鍵。 同樣,在每列上建立索引以允許外鍵。

我正在使用以下SQL查詢來更新表:

INSERT INTO JoinTable (id, RefCode, IdType)
   VALUES ( NULL, "AAA", 9584 )
ON DUPLICATE KEY UPDATE
   id = LAST_INSERTED_ID(id),
   refCode = values(refCode),
   refType = values(refType)

因此,它的主要問題是15k引用ID的運行時間約為30分鍾。

當我使用MyISAM引擎時,大約需要2秒鍾。 但沒有其他外鍵。

我了解MyISAM刪除外鍵,而且速度更快,但是我認為對於如此小的數據庫,30分鍾的時間是不正常的。

你能幫我提高表演嗎?

在MySQL配置中編輯InnoDB設置,然后重新啟動MySQL守護程序。 它們都以“ innodb_”開頭,並將對其目的進行解釋。

我更改了innodb_buffer_pool_size和innodb_log_file_size。

更改插入以使用IGNORE,然后嘗試不使用VALUES()

   INSERT IGNORE INTO JoinTable (id, RefCode, IdType)
   VALUES ( NULL, "AAA", 9584 )        
   ON DUPLICATE KEY UPDATE
   id = LAST_INSERTED_ID(id),
   refCode = refCode,
   refType = refType

也可能是您的innodb緩沖區大小太小。

暫無
暫無

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

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