8.4.2.3 BLOB 형 최적화
텍스트 데이터를 저장할 큰 BLOB를 저장하려면 먼저 그것을 압축하는 것을 고려해야합니다. 전체 테이블이
InnoDB
또는MyISAM
에 의해 압축 된 경우이 기법을 사용하지 마십시오.여러 열이있는 테이블에 BLOB 컬럼을 사용하지 않는 쿼리의 메모리 요구 사항을 줄이기 위해, BLOB 컬럼을 별도의 테이블로 분할하여 필요에 따라 결합 쿼리에서 그것을 참조하는 것을 고려합니다 .
BLOB 값을 검색하고 표시하기위한 성능 요구 사항은 다른 데이터 형과 크게 다를 수 있기 때문에 BLOB 특정 테이블을 다른 저장 장치 또는 개별 데이터베이스 인스턴스에 넣을 수 있습니다. 예를 들어, BLOB를 얻으려면 대량의 순차적 디스크 읽기가 필요하며 SSD 장치 보다 기존의 하드 드라이브가 더 적합합니다.
이진
VARCHAR
컬럼의 것이 동등한 BLOB 컬럼보다 권장 될 수있는 이유에 대해서는 섹션 8.4.2.2 "문자 및 문자열 최적화" 를 참조하십시오.매우 긴 텍스트 문자열에 대한 동등성을 테스트하는 대신 개별 컬럼에 컬럼의 해시를 저장하고 그 컬럼에 인덱스를 설정하여 쿼리의 해시 값을 테스트합니다. (
MD5()
또는CRC32()
함수를 사용하여 해시 값을 생성합니다.) 해시 함수는 서로 다른 입력에서 중복 된 결과를 생성 할 수 있기 때문에 계속 쿼리에 어구AND
을 포함 밖으로 잘못된 일치으로부터 보호합니다. 성능은 해시 값의 작고 쉽게 스캔되는 인덱스에서 이점을 얻을 수 있습니다.blob_column
=long_string_value