programing

MySQL의 Varbinary 대 Blob

codeshow 2023. 9. 14. 23:43
반응형

MySQL의 Varbinary 대 Blob

테이블에 저장해야 하는 원시 바이너리 데이터가 2k 정도 있는데 Varbinary 타입을 선택할지 Blob 타입을 선택할지 모르겠습니다.MySQL 문서의 설명을 다 읽었지만 계약서를 찾지 못했고 설명을 비교했습니다.나도 varbinary가 255자까지만 지원한다고 읽었는데 varbinary(2048) 필드를 성공적으로 만들어서 조금 혼란스럽습니다.

이진 데이터는 색인화할 필요도 없고 질의할 필요도 없습니다.PHP에서 한 타입을 사용하는 것이 다른 타입보다 장점이 있습니까?

감사합니다!

VARBINARY는 MySQL 5.0.2 이하에서는 255바이트로, 5.0.3 이상에서는 65kB로 바인딩됩니다.

BLOB65kB에 바인딩되어 있습니다.

궁극적으로.VARBINARY와 사실상 같습니다.BLOB이전 버전의 MySQL과 호환성을 유지하지 않는 한, 저장할 수 있는 것의 관점에서 볼 때.MySQL 설명서에는 다음과 같이 나와 있습니다.

대부분의 면에서, 당신은 생각할 수 있습니다.BLOB일란으로VARBINARY원하는 크기만큼 클 수 있는 열.

실제로 blob은 더 클 수 있습니다(크기 제한에 최대 2^32-1의 작은 blob, blob, medium blob & long blob http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html) 이 있습니다).

또한 blob 스토리지는 행의 "외부"에서 증가하는 반면, 최대 가변 크기는 사용 가능한 여유 행 크기로 연결됩니다(따라서 실제로는 64Kb 미만일 수 있습니다).

둘 사이에 약간의 차이가 있습니다.

1) 인덱스 스크립팅(블롭은 인덱스에 접두사 크기가 필요하고 varbinary는 필요하지 않음) http:/en/column-indexes.html
테이블 생성 테스트(blob_col BLOB, INDEX(blob_col(10));

2) 이미 언급한 바와 같이 MySql 5.0.x 이전 버전에서는 varbinary & blob 간에 트레일링 공간 문제가 다르게 관리되고 있습니다: http://en/blob.html http://en/binary-varbinary.html

(스택 오버플로에서 너무 많은 링크가 스팸이라고 생각하므로 링크를 계산합니다.)

한 가지 중요한 차이점은 blob 유형은 보조 스토리지에 저장되는 반면 varchar 및 다른 "단순" 유형과 동일한 방식으로 행에 저장된다는 것입니다.

이는 블롭 데이터를 가져오고 조작하기 위한 추가 룩업이 비용이 많이 드는 바쁜 시스템에서 성능에 영향을 미칠 수 있습니다.

메모리 저장 엔진이 BLOB/TEXT를 지원하지 않지만 VARB와 함께 작동한다는 점을 지적할 필요가 있습니다.1년차.

나는 단지 약 5k 바이너리 데이터를 열에 저장하는 테스트 앱을 보고 있습니다.처음에는 varbinary를 사용했지만 너무 느려서 blob을 시도해보기로 했습니다.디스크 쓰기 속도를 상위로 보고 있지만 차이가 없습니다.

mysql 설명서에서 읽은 유일한 중요한 차이점은 blob이 메모리 엔진에서 지원되지 않으므로 쿼리를 사용하여 만든 임시 테이블이 디스크에 생성되며(mysql이 temp table을 사용할 때 참조) 훨씬 느립니다.따라서 행에 들어갈 수 있을 정도로 짧은 경우(현재 모든 열에 대해 총 64,000개)에는 변동/이진을 거는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/8476968/varbinary-vs-blob-in-mysql

반응형