Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa ActiveRecord destroy_all memakan waktu lama?

Menggali lebih dalam, sepertinya ini adalah penghapusan dari comments array yang memakan waktu sangat lama. Catatan yang dihapus kemudian dihapus dari larik di sini .

Mensimulasikan ini dengan array besar, kami mendapatkan perilaku lambat yang sama:

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 mungkin dapat dioptimalkan untuk melakukan Array#clear dalam kasus 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. Bagaimana cara mengatur params ORDER BY menggunakan pernyataan PDO yang disiapkan?

  2. MYSQL group_concat setara di Sybase ASE?

  3. Sambungan gagal:Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi:YA) dari fungsi php

  4. ERROR 2003 (HY000):Tidak dapat terhubung ke server MySQL di AWS RDS

  5. Mencari tahu apakah varchar berisi tanda persen, di MySQL