mysql에서 CHECKSUM TABLE table1name
명령은 InnoDB & MyISAM에서 작동하지만 ndbcluster
에서는 작동하지 않습니다. 체크섬이나 관련 속성을 찾기위한 다른 방법은 테이블이 상호 작용 한 후에 동일한지를 알기 위함입니다.mysql CHECKSUM TABLE이 ndbcluster에 대해 작동하지 않습니다.
0
A
답변
1
질문을 올바르게 이해하면 NDB 엔진을 기반으로 할 때 mysql 테이블의 체크섬을 얻는 방법을 묻습니다.
SELECT @crc as crc FROM
(
select @crc := ''
) tmp,
(
SELECT min(
length(
@crc := sha1(
concat(
@crc, sha1(
concat_ws('#', field_1, field_2, ...)
)
)
)
)
)
)
FROM
(
SELECT field_1, field_2, ... FROM your_table
ORDER BY yourtable_some_key_id
) tmp_1
) final
가 이노에서이 제 2 서브 쿼리를 필요가 없을 것입니다 및 작동합니다,하지만 기본 CHECKSUM 표가 your_table 도 작동합니다 : 다음 쿼리는 트릭을 할 것입니다. ORDER BY 절에서 지정할 수있는 모든 순서에도 불구하고 결과를 정렬하기 전에 내부 처리가 수행되며 NDB에서는이 순서가 항상 동일하지는 않습니다. 이 경우 강제로해야하므로 특정 정렬 순서가있는 두 번째 하위 쿼리가 필요합니다.
NDB에서이 작업을 수행하는 데 드는 첫 번째 가격은 두 번째 하위 쿼리에 의해 생성 된 내부 순서화 된 임시 테이블이며이 쿼리를 사용할 때 유의해야 할 점 중 하나입니다 .
두 번째 가격은 임시 주문 테이블을 만드는 데 걸리는 시간입니다. 100K 행을 가진 테이블에 대한 테스트에서 쿼리는 하위 쿼리로 약 1.5-2 초가 걸리고 약 100msec가 걸렸습니다.
이 솔루션이 도움이 this blog
희망에서 발견되는 일반적인 일을 기준으로합니다.