簡體   English   中英

強大的機器能提高DELETE的性能嗎?

[英]Can a powerful machine improve performance of DELETE?

我正在使用 MySQL 5.7 並嘗試通過主鍵從 Innodb 表中刪除 1 億行。

該表是在 RDS 中構建的,我在個人 PC 上通過 SQLYOG 執行刪除查詢。

在我看來,無論哪個客戶端連接到 RDS,它只會將刪除查詢發送到 RDS,然后 RDS 運行它,不會使用客戶端的資源。 但是,有人告訴我,如果我連接到 RDS 並在強大的服務器上執行刪除查詢,它將顯着加快速度。

這是真的? 誰能解釋一下嗎?

服務器的強大程度可能並不重要。

大刪除需要

  • 找到要刪除的行
  • 鎖定行 - 以防止其他人弄得一團糟
  • 保存正在刪除的每一行的副本(以防崩潰/回滾)
  • 更新索引(其中一些會延遲到DELETE完成之后)
  • 清理已刪除的行(在COMMIT時)

性能問題:

  • MySQL 在單個 CPU 中完成大部分工作——因此,更多內核無濟於事
  • CPU 速度不是決定因素——無論如何,今天的 CPU 只比十年前的 CPU 快一點。
  • 磁盤速度很重要——但今天大多數機器都使用 SSD
  • 雲服務“提供”IOPS。 重要。 (但讓我們嘗試減少所需的 IOP數量。)
  • 磁盤大小無關緊要——好吧,如果你用行的舊副本填滿磁盤,這確實很重要。

也就是說,更強大的服務器不會有太大幫助。

可以幫助回答以下問題:

  • 如果要刪除大部分行,有一種更快的方法
  • 如果要刪除的行是“舊”行,請提前計划PARTITIONing 當您可以將DELETE替換為DROP PARTITION時,這才是可行的。)
  • 如果以上都失敗了,你是批量刪除嗎? (大約 1000 行的批次幾乎是最佳的。它的速度是一次一個的幾倍。超過 1000 行不會買太多(如果有的話)性能。)

更多細節: http://mysql.rjweb.org/doc.php/deletebig

暫無
暫無

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

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