Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao ActiveRecord kill_all mất nhiều thời gian như vậy?

Tìm hiểu sâu hơn về vấn đề này, có vẻ như đó là việc xóa các comments mảng mất rất nhiều thời gian. Các bản ghi bị xóa sau đó sẽ bị xóa khỏi mảng tại đây .

Mô phỏng điều này với một mảng lớn, chúng tôi nhận được cùng một hành vi chậm:

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 có thể được tối ưu hóa để thực hiện Array#clear trong trường hợp của một 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. Làm cách nào để lưu nhiều đầu vào của các hàng trong cùng một cột cơ sở dữ liệu?

  2. Làm cách nào để đặt dấu gạch ngược vào tên cột được gọi là khóa cho chế độ ngủ đông

  3. Lỗi kết hợp bất hợp pháp của lỗi đối chiếu từ MySql khi chạy bộ thử nghiệm rails

  4. Xuất kết quả truy vấn trong MySQL Workbench vượt quá 1000 bản ghi

  5. đếm số lần một tập lệnh được thực thi