레일은 자동 증가 32 비트 정수를 테이블의 기본 키로 사용하기를 좋아합니다. 테이블에있는 32 비트 int 행의 한계에 가까워지면 사람들은 무엇을합니까?레일 매우 큰 테이블
답변
키를 bigint으로 변경할 수 있습니까? 이것은 8 바이트 (64 비트) 정수입니다. 그것은 40 억이 아니라 9 억까지 제공합니다.은 분명히 PostgreSQL 및 mySQL 모두 bigints을 허용 않는 필드 as Alex suggested에 제한을 지정
execute("ALTER TABLE massive_table CHANGE id id BIGINT")
편집 : 기본 이주는 당신이 뭔가를해야 할 것입니다,하지만이 없습니다.
8 바이트의 ID 필드를 사용할 수 있습니다. 제한 매개 변수 : 레일은을 사용하지만이 할 수있는, 긴 정수 또는 이중 정밀도 열을 생성하는 유형을 제공하지 않습니다
create_table :my_table do |t|
t.integer :long_int_column, :limit => 8
t.float :double_column, :limit => 53
end
8, 53 마법의 숫자입니다. 이 작업은 PostgreSQL 및 MySQL 데이터베이스에서 작동하지만 다른 작업은 시도하지 않았습니다.
테이블을 변경하는 경우에, 당신은
change_column :my_table, :my_col, :integer, :limit => 8
8 바이트 ID 필드에 대한 대안은 어떤 방법으로 ID를 롤오버를 처리하는 것입니다 작성할 수 있습니다. 이는 데이터 및 애플리케이션의 특성에 달려 있습니다.
int (8)는 8 바이트 필드가 아닙니다. 기본 너비 대신 숫자 너비를 8로 조정하는 것입니다. http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html int 필드는 항상 4 바이트입니다. – Gazler
아니, 실제로 생성 된 열의 유형을 변경합니다. 이 게시물을 참조하십시오 : http://moeffju.net/blog/using-bigint-columns-in-rails-migrations –
죄송합니다, 방금 이것을 테스트하고 당신은 절대적으로 맞습니다. 링크를 가져 주셔서 감사합니다. – Gazler
- 1. SQL Server의 매우 큰 테이블
- 2. optomise 매우 큰 테이블 쿼리
- 3. 레일 - 큰 대 분산 테이블
- 4. mysql 테이블 구조 - 하나의 매우 큰 테이블 또는 별도의 테이블?
- 5. 매우 느린 선택이있는 큰 MySQL 테이블
- 6. 매우 큰 목록에 합류
- 7. 매우 큰 목록을 직렬화
- 8. 매우 큰 숫자의 vb.net
- 9. 매우 큰 파일의 XOR
- 10. 은 매우 큰 문자열을
- 11. 매우 작거나 매우 큰 숫자를 곱하는 함수
- 12. 큰 파일 또는 매우 큰 파일이있는 Resharper
- 13. 레일 : 큰 세트로 작업하기
- 14. C# RSClientPrint 매우 큰 스풀
- 15. 매우 큰 정수 곱셈과 또한
- 16. 매우 큰 벡터를 만드는 방법
- 17. 메모리에 매우 큰 문자열이 있습니다.
- 18. SQL SSRS 매우 큰 추출물
- 19. iPad에 매우 큰 이미지 표시
- 20. 매우 큰 새들의 추출 점
- 21. Qt에서 매우 큰 이미지 처리
- 22. Oracle에서 매우 큰 색인 생성
- 23. 매우 큰 텍스트 파일로 페이징하기
- 24. ip_len이 매우 큰 값으로 설정되었습니다.
- 25. 매우 큰 디렉토리의 정보 검색
- 26. WPF 및 매우 큰 이미지
- 27. 크기가 매우 큰 배열 할당
- 28. 매우 큰 int에서 모듈로 C#
- 29. 파이썬에서 매우 큰 지수 계산
- 30. 매우 큰 Jar 파일과 FAT32
학문적 질문입니까, 아니면 40 억 개가 넘는 행이있는 테이블이 있습니까? – DanSingerman
@DanSingerman 학문적 인 질문이 아닙니다. 한 번만이 문제로 인해 2 시까 지 일해야했습니다 :) 쓰기 및 삭제 작업이 많아서 4 바이트 ID를 롤오버하는 것이 쉽지만 행 수가 10 억 개 밖에되지 않는 경우에도 모든 종류의 문제. –