정렬 알고리즘 및 MySQL은 두 종류의 max_length_for_sort_data MySQL의 정렬 길이 제한

SET max_length_for_sort_data = 1024

'%의 max_length_for_sort_data %의'LIKE SHOW의 VARIABLES;

查询 : TABLE_NAME, COLUMN_NAME의 LIMIT 0100에 의해 CS_COLUMNS의 ORDER SELECT * FROM

错误代码: 1815
내부 오류 : IDB-2015 : 정렬 길이를 초과했습니다. 세션 변수 max_length_for_sort_data은 높게 설정 될 필요가있다.

시간이 많이 소요 : 7.171 초

(정렬 및 양방향 단방향 정렬) 두 개의 파일 mysql을 정렬 알고리즘이 있습니다 당신이 컬럼의 전체 크기 플러스 열을 기준으로 정렬 순서를해야 할 경우, 언제 어떤는 max_length_for_sort_data 정의 바이트, MySQL은 이중 종류를 사용합니다 초과 열 심지어 양방향 정렬을 사용하는 열을 기준으로 (text.blob 시간) 순서를 사용하지 않아도, (당신은 하나의 정렬 된 열 수 이러한 열을 변환 substtring ()를 사용할 수 있습니다).

MySQL의 알고리즘 값 max_length_for_sort_data에게 선택된 변수 변화에 의해 영향을받을 수있다. 각 행에 정렬되도록하는 하나의 고정 정렬 버퍼가 생성되기 때문에, varchar 열 max_length_for_sort_data 소정 값은 최대 길이가 아닌 정렬 데이터의 실제 크기이다.

때 MySQL의 텍스트로했다. 열이 블롭을 정렬되면 더 max_sort_length되어야 프리픽스를 사용하여 정의 될 수있다 다시 외부 메모리의 구조의 접두사 카피로부터 데이터를 수신 할 수있는 고정 된 크기 및 구성을 할당하기 때문이다 프리픽스 나머지 값을 무시 .

MySQL은 정말 가치 상승의 max_length_for_sort_data 경우 알고리즘의 종류, 사용 및 디스크 사용량 상승은, CPU 사용량 감소, sort_merge_passes의 값이, 힘 순서 아마도 단일 사용을 이전보다 더 빨리 증가 무엇을 표시하지 않습니다 정렬 알고리즘.


이중 분류 :
칼럼과 로우에 의해 판독 포인터 위해 그들을 정렬하고,리스트의 값에 따라 해당 목록에서 다음 스캔리스트가 정렬되어, 다시 판독 데이터 출력.
오버 헤드 이중 종류는 그가 두 번 테이블을 읽기 때문에, 두 번째 읽기 임의 IO의 많은으로 이어질 것입니다, 엄청난 수 있습니다,의 MyISAM에 대한 라이 특히, 고가의 MyISAM의 비용이 각 행을 추출하기 위해 시스템 호출 테이블을 사용했다 데이터입니다.

단일 정렬 :
그들을 정렬 할 열별로 순서에 따라, 모든 열 쿼리의 요구를 읽은 다음 빠르게, 스캔 출력 후 효율성을 목록을 정렬하고 두 번째 읽기를 피할 수 있습니다. 그리고 랜덤 IO IO의 순서에 넣어하지만 메모리에 저장된 각 행을 취급하기 때문에 더 많은 공간을 사용합니다.

추천

출처www.cnblogs.com/zhjh256/p/11605192.html