programing

ActiveRecord 마이그레이션에서 SQL 문을 병렬로 안전하게 실행하려면 어떻게 해야 합니까?

padding 2023. 10. 5. 21:15
반응형

ActiveRecord 마이그레이션에서 SQL 문을 병렬로 안전하게 실행하려면 어떻게 해야 합니까?

1TB MariaDB 데이터베이스의 거의 모든 테이블의 모든 행에 영향을 미치는 ActiveRecord 마이그레이션을 작성하고 있습니다.마이그레이션 로직은 각 테이블(그리고 아마도 각 개별 행)이 이론적으로 다른 테이블/행에 대한 변경 사항과 독립적으로 작동될 수 있도록 구성되어 있습니다. 즉, 수백 개의 데이터를 생성하고 있습니다.Update table Set column = function_of(column)진술들.수정할 열은 런타임 데이터에 따라 달라지므로 마이그레이션을 시작할 때 생성됩니다.

제게 문제가 있는 것은 제가 수백개의 문제입니다.Update명령문, 프로덕션 애플리케이션에 다운타임이 발생하고 수십 시간이 걸리기 때문에 직렬로 실행하고 싶지 않습니다.테이블 당 각 개인별Update진술은 최악의 경우 15분 정도 걸리는데, 이 시간은 비집고 들어갈 정도로 짧은 것 같은데, 액티브레코드는 진술을 병렬적으로 실행할 뚜렷한 방법이 없는 것 같습니다.다른 StackOverflow 게시물에서 막연하면서도 불길한 메시지를 보았습니다.Thread.new { execute '<query>' }안전하지는 않지만, 왜 그런지는 잘 모르겠습니다.

제 목표를 달성할 수 있는 안전한 방법이 있을까요?그렇지 않은 경우 ActiveRecord 마이그레이션에서 구체적으로 불가능한 이유는 무엇입니까?

언급URL : https://stackoverflow.com/questions/75760401/how-can-i-safely-execute-sql-statements-in-parallel-in-an-activerecord-migration

반응형