WPML
상태
해결됨
해결된 버전
2.3.8

문제 개요

WPML Media Translation 플러그인 2.3.0 버전부터는 번역 간에 미디어를 번역하고 동기화할 수 있습니다.

설정 과정(이전 버전에서 마이그레이션할 때도 실행됨)의 일환으로 WPML 미디어는 전체 사이트를 스캔하여 콘텐츠에 사용된 미디어 URL을 찾습니다.

미디어가 포함된 글에 플래그를 지정해 두면 나중에 도움이 됩니다. 미디어 번역과 관련된 특정 이벤트(예: 특정 미디어 글 번역)가 발생할 때, 번역된 미디어로 콘텐츠를 업데이트하기 위해 실제로 미디어가 포함된 글만 스캔할 수 있기 때문입니다.

그러나 매우 큰 사이트의 경우, 설정 과정이 데이터베이스에 부담을 주어 전체 과정이 예상보다 느려질 수 있습니다.

대부분의 경우 이러한 부담은 URL을 기반으로 첨부 파일 ID를 식별하는 데 필요한 쿼리로 인해 발생합니다. 일반적으로 HTML 태그의 속성에서 첨부 파일 ID를 확인할 수 있습니다(예: id=”attachment_8” – 여기서 8이 첨부 파일의 ID입니다). 이러한 속성을 사용하지 않는 경우 WPML 미디어는 실제 URL에서 ID를 확인합니다. 이 경우 다음 두 가지 유형의 쿼리를 사용합니다.

  • wp_posts 테이블의 ‘guid’ 필드와 일치하는 쿼리
  • wp_postmeta 테이블의 meta_value 필드와 일치하는 또 다른 쿼리.

그러나 이러한 테이블 필드는 기본적으로 인덱싱되지 않습니다. 텍스트 일치 검색이므로(부분 텍스트 검색이 아니더라도) 대규모 데이터베이스에서는 속도가 느려질 수 있습니다.

임시 해결 방법

이 문제를 우회하는 한 가지 방법은 (최소한 일시적으로) 이러한 필드에 인덱스를 추가하는 것입니다.
다음과 같은 두 개의 SQL 쿼리를 사용하여 이 작업을 수행할 수 있습니다.

ALTER TABLE `wp_posts` ADD INDEX `guid` (`guid`); ALTER TABLE `wp_postmeta` ADD INDEX `meta_value` (`meta_value`(512));

이러한 추가 작업은 디스크에서 데이터베이스의 물리적 크기를 약간 더 크게 만드는 것 외에는 데이터베이스에 어떠한 부작용도 일으키지 않습니다. WPML 미디어 설정을 실행한 후 롤백하려면 다음 두 개의 MySQL 쿼리를 사용할 수 있습니다.

ALTER TABLE `wp_posts` DROP INDEX `guid`; ALTER TABLE `wp_postmeta` DROP INDEX `meta_value`;

참고: 쿼리에 언급된 테이블의 wp_ 접두사는 WordPress 구성에 따라 다를 수 있습니다. 일반적으로 기본값은 wp_입니다.

사례 연구 예시: 약 140,000개의 첨부 파일과 약 5,000개의 글이 있는 사이트에서 설정을 완료하는 데 30분 이상 걸릴 수 있습니다. 인덱스를 추가한 후에는 설정이 몇 분 안에 완료됩니다. 테스트는 일반적인 개발 환경에서 수행되었습니다. 실제 운영 서버에서는 이 수치가 훨씬 더 좋게 나타날 수 있습니다.

알려진 모든 문제 →