2016-10-07 3 views
3

나는이 질문을 SO에서 제기해야하는지 여부를 잘 모릅니다. 그러나 나는 나의 의심에 대해 명확한 생각을 갖고 있지 않다. 레일즈 마이그레이션에 기본값을 설정하지 말고 CTO의 코드 검토 대신 null 값을 사용한다고 들었습니다. 그의 설명은 once the database gets huge enough, migrations with defaults runs slow and may throw database timeout errors과 같습니다. 하지만 데이터베이스 수준에서는 초기 설정으로 실행하기에 충분히 빠르다고 생각합니다. 내가 맞습니까?레일스 - 레일 마이 그 레이션에서 기본값을 사용해서는 안됩니다

답변

4

테이블 열 수가 많은 경우 추가 열 마이그레이션에서 기본값을 사용하면 시간이 오래 걸릴 수 있습니다.

은 포스트 그레스의 문서에 의해 주어진 팁입니다 : https://www.postgresql.org/docs/9.5/static/ddl-alter.html

팁 : 기본적으로 열을 추가하면 테이블의 각 행을 갱신 요구 (새 열 값을 저장하기 위해). 그러나 기본값이 지정되지 않으면 PostgreSQL은 물리적 업데이트를 피할 수 있습니다. 그러므로 기본값이 아닌 값으로 열을 채우려면 기본값이없는 열을 추가하고 UPDATE를 사용하여 올바른 값을 삽입 한 다음 아래에 설명 된대로 원하는 기본값을 추가하는 것이 가장 좋습니다.

0

이 방법을 사용하십시오. 바이트 단위로 기본값의 크기와 비교하여 'NULL'크기가 지정됩니다.

몇 가지 데이터 행의 차이는 KB 이하일 수 있지만 데이터베이스 크기가 클 경우 배율 효과가 있습니다. 따라서 마이그레이션하는 동안 기본값 옵션을 사용하려면 더 많은 작업을해야합니다.

많은 경우 다운 타임 (또는 마이그레이션) 시간이 중요 할 수 있으므로 DBA와 개발자가 사용 가능한 리소스의 최적 사용을 보장하는 역할을합니다. 여기에는 시간이 포함됩니다.

더 명확히하기 위해 더미 데이터베이스와 벤치마킹 도구를 사용하여이를 평가하고 싶을 수도 있습니다.

관련 문제