2017-12-08 5 views
0

우리에게는 하나의 마스터 및 2 개의 VIP 슬레이브 데이터베이스 서버가 있습니다. 마스터의 VARCHAR (255)에서 TEXT로 컬럼의 데이터 유형을 변경했습니다. 응용 프로그램은 현재 쓰기 작업에만 마스터를 사용하고 읽기 작업을 위해 구성된 슬레이브로 구성됩니다. ALTER TABLE 명령을 사용하여 마스터 서버에서 데이터 유형을 변경 한 후 슬레이브 서버가 응답하지 않게됩니다. 우리는 Mariadb 10.0 를 사용하는 복제 문제

 
Id User Host Db Command Time(sec) State Info 
----------------------------------------------------------------------- 
203739 repl slave1  Binlog Dump 75,143,121 Master has sent all binlog to slave; waiting for binlog to be updated 

203740 repl slave2  Binlog Dump 75,143,121 Master has sent all binlog to slave; waiting for binlog to be updated 

슬레이브 인스턴스는 쿼리를 느리게하기 때문에 매우 느려집니다 [정보 처리]. 세션의 수 : 1590 thread_pool_max_thread = 500 현재 값 =

648 마스터 서버에 대한 ALTER TABLE을 수행 한 후, 서버를 슬레이브 복제 및 세션 동시에 번호되었다 슬레이브 서버에 급격히 증가 얻을했다. 느린 쿼리 때문에 슬레이브가 응답하지 않는다고 생각합니다.

하지만이 쿼리가 왜 느려지고 슬레이브가 응답하지 않는지 나는 알지 못합니다. DBA는 ANALYZE TABLE 명령을 실행 한 후 문제가 해결되었다고 말합니다. 그러나 ANALYZE TABLE은 통계 정보 만 업데이트하기 때문에 왜 이러한 일이 발생했는지 이해할 수 없습니다. 누군가가 왜 이런 일이 발생했는지에 대한 의견이 있으면 도움이 될 것입니다. 향후 이러한 문제를 방지하는 방법.

답변

0

TEXTVARCHAR보다 느린 경우가 하나 있습니다. SELECT은 (종종 GROUP BY 또는 ORDER BY으로 정렬하기 위해) 임시 테이블을 작성해야 할 때 먼저 MEMORY 테이블을 작성하려고 시도합니다. 그러나 TEXTBLOB은 그러한 사용을 막기 때문에 대신 MyISAM을 사용합니다. 이것은 더 느립니다 (그러나 작업이 완료됩니다).

사용자가 '매우 느리게'및 '응답하지 않음'과 같은 문구를 사용하는 경우가 거의 없으므로이 경우가 "사소한 사례"라고 말합니다. 나는 이라고 생각하면 SELECT이 두 번 느려질 수 있습니다.

또한, ANALYZE TABLE 토론 물을 보유하지 않습니다. 다시 우연의 일치가 아닌 인과 관계가 될 수 있습니다.

그래서 TEXT으로 변경하면이 '붉은 청어'가 될 수 있습니다. 대신 느린 로그를 사용하여 느려지고있는 것을 발견해 봅시다. 제가 일하기를 좋아하는 것에 대해서는 this을보십시오.