ActiveRecord 多対多のパフォーマンス
テーブル
groups:10万件
works:100万件
group_mappings:100万件
この状態で以下の処理を実行
def edit_map gid = 90000 GroupMapping.destroy_all(['group_id = ?', gid]) g = Group.find(gid) for r in 1..20 gm = GroupMapping.new gm.group_id = gid gm.work_id = r gm.save end end
1回目
#Completed in 1.17137 (0 reqs/sec) | Rendering: 0.01985 (1%) | DB: 1.06541 (90%) | 200 OK http://localhost/test/edit_map
2回目
#Completed in 0.49981 (2 reqs/sec) | Rendering: 0.00101 (0%) | DB: 0.44497 (89%) | 200 OK http://localhost/test/edit_map
3回目
#Completed in 0.24295 (4 reqs/sec) | Rendering: 0.00093 (0%) | DB: 0.18428 (75%) | 200 OK http://localhost/test/edit_map
このぐらいのデータ量ならぼちぼち。
問題が発生したら考えよう。
ActiveMessaging?? AP4R??
http://d.hatena.ne.jp/kiwamu/20070628/1183063085