Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego ActiveRecord destroy_all trwa tak długo?

Zagłębiając się w to głębiej, wydaje się, że jest to usunięcie z comments tablica, która zajmuje bardzo dużo czasu. Usunięte rekordy są następnie usuwane z tablicy tutaj .

Symulując to z dużą tablicą, otrzymujemy to samo powolne zachowanie:

1.9.3-p194 :001 > require 'benchmark'; require 'ostruct'
 => true 
1.9.3-p194 :002 > i = 0; a = []
 => [] 
1.9.3-p194 :003 > 35_000.times { i+=1; a << OpenStruct.new(value: i) }
 => 35000 
1.9.3-p194 :004 > puts Benchmark.measure { a.each { |i| a.delete(i) } }
623.560000   0.820000 624.380000 (625.244664)

ActiveRecord prawdopodobnie mógłby zostać zoptymalizowany do wykonywania Array#clear w przypadku destroy_all ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sformatuj datę w MySQL, aby zwrócić MonthName, Year

  2. Leniwe pobieranie pojedynczej kolumny (atrybut klasy) z Hibernate

  3. Jak dołączyć do stołów mysql

  4. Jak uzyskać nazwy kolumn z danej tabeli MySQL?

  5. mysql sortowanie numerów wersji