설명
이 플러그인을 어떻게 사용하나요?
이 플러그인을 설치하고 활성화한 후 도구 메뉴에서 색인 MySQL 도구를 방문하세요. 여기에서 지금 키 추가 버튼을 누르면 됩니다. 테이블이 큰 경우, 시간 초과를 방지하기 위해 WP-CLI와 함께 사용하세요. 자세한 내용은 WP-CLI 섹션을 참조하세요.
내 사이트에 어떤 영향을 미치나요?
이 플러그인은 선택한 테이블에 고성능 키를 추가하여 MySQL 데이터베이스의 작동 효율을 높여줍니다. 요청 시 사이트의 MySQL 데이터베이스 사용량을 모니터링하여 어떤 데이터베이스 작업이 가장 느린지 감지합니다. 사용자, 글, 페이지 및/또는 상품이 많은 대규모 사이트에 특히 유용합니다.
필요한 경우 워드프레스의 기본 키를 복원하는 데 사용할 수 있습니다.
이게 무슨 일이에요?
워드프레스는 사이트를 훌륭하게 만드는 모든 요소를 어디에 저장할까요? 페이지, 글, 상품, 미디어, 사용자, 사용자 정의 필드, 메타데이터, 그리고 모든 귀중한 콘텐츠는 어디에 있을까요? 이 모든 데이터는 MySQL 관계형 데이터베이스 관리 시스템에 있습니다. (많은 호스팅 제공업체와 서버는 MySQL 소프트웨어의 MariaDB fork를 사용하며, MySQL 자체와 정확히 동일한 방식으로 작동합니다.)
사이트가 커질수록 MySQL 테이블도 커집니다. 테이블이 너무 크면 페이지 로딩 속도가 느려지고, 사용자들이 불편을 겪게 되며, 심지어 검색 엔진 순위에도 악영향을 줄 수 있습니다. 게다가 대량 가져오기는 엄청난 시간을 소모할 수 있습니다. 이 문제에 어떻게 대처할 수 있을까요?
데이터베이스 클리너 플러그인을 설치하고 사용하면 오래된 원치 않는 데이터를 제거하고 테이블을 재정비할 수 있습니다. 이렇게 하면 테이블 크기가 작아지고 따라서 속도가 빨라집니다. 이는 바람직하고 필요한 작업입니다. 하지만 이 플러그인의 역할은 아닙니다. 호스팅 제공업체에서 지원하는 경우, Persistent Object Cache 플러그인을 설치하고 사용하여 데이터베이스 트래픽을 줄일 수 있습니다. 이 플러그인의 역할도 아닙니다.
이 플러그인은 워드프레스가 필요한 정보를 더 쉽게 찾을 수 있도록 MySQL 테이블에 데이터베이스 키(색인라고도 함)를 추가합니다. 모든 관계형 데이터베이스 관리 시스템은 정보를 장기 테이블에 저장합니다. 예를 들어, 워드프레스는 글과 기타 콘텐츠를 wp_posts라는 테이블에 저장하고, 사용자 지정 글 필드를 wp_postmeta라는 다른 테이블에 저장합니다. 성공적인 사이트는 수천 개의 글과 수십만 개의 사용자 지정 글 필드를 가질 수 있습니다. MySQL은 두 가지 역할을 합니다.
- 모든 데이터를 체계적으로 정리.
- 필요한 데이터를 빠르게 찾기.
MySQL은 두 번째 작업을 위해 데이터베이스 키를 사용합니다. 각 테이블에는 하나 이상의 키가 있습니다. 예를 들어, wp_posts 작성자를 알고 있을 때 글을 빠르게 찾을 수 있는 키를 가지고 있습니다. post_author 키가 없다면 MySQL은 모든 글을 스캔하여 원하는 작성자와 일치하는 글을 찾아야 합니다. 사용자들은 이것이 얼마나 느린지 알고 있습니다. 하지만 이 키를 사용하면 MySQL은 일치하는 글로 바로 이동할 수 있습니다.
사용자 몇 명과 글 수십 개가 있는 새로운 워드프레스 사이트에서는 키가 그다지 중요하지 않습니다. 하지만 사이트가 성장함에 따라 키가 매우 중요해지기 시작합니다. 데이터베이스 관리 시스템은 테이블이 커짐에 따라 키를 업데이트, 조정, 그리고 미세 조정하도록 설계되었습니다. 즉, 기본 테이블의 내용을 변경하지 않고 키가 계속 업데이트되도록 설계되었습니다. 대규모 데이터베이스를 사용하는 조직에서는 키를 추가, 삭제 또는 변경해도 기본 데이터는 변경되지 않습니다. 많은 데이터 센터에서는 이러한 작업이 일상적인 유지 관리 작업입니다. 키 변경으로 인해 데이터베이스 데이터가 손실된다면 MySQL과 MariaDB 개발자들은 저뿐만 아니라 많은 헤비 유저들의 불만을 들을 것입니다. (물론 워드프레스 인스턴스는 백업해야 합니다.)
더 나은 키를 사용하면 워드프레스 코드를 변경하지 않고도 더 빠르게 실행할 수 있습니다. 대규모 사이트 경험에 따르면 MySQL 속도 저하의 상당수는 더 나은 키를 통해 개선될 수 있습니다. 코드는 시이고, 데이터는 보물이며, 데이터베이스 키는 코드와 데이터가 원활하게 작동하도록 하는 윤활유와 같습니다.
플러그인은 어떤 테이블에 키를 추가하나요?
이 플러그인은 워드프레스와 우커머스 테이블에 키를 추가하고 업데이트합니다.
- wp_comments
- wp_commentmeta
- wp_posts
- wp_postmeta
- wp_termmeta
- wp_users
- wp_usermeta
- wp_options
- wp_wc_orders_meta
- wp_woocommerce_order_itemmeta
- wp_automatewoo_log_meta
이 플러그인을 한 번만 실행하면 그 효과를 볼 수 있습니다.
데이터베이스 작업을 어떻게 모니터링할 수 있나요?
대시보드의 도구 메뉴에 있는 MySQL 색인 페이지에 “데이터베이스 작업 모니터링” 탭이 있습니다. 이 탭을 사용하여 원하는 시간(분) 동안 모니터링을 요청하세요.
다음을 모니터링 할 수 있습니다:
- 사이트(사용자에게 표시되는 페이지) 또는 대시보드, 또는 둘 다입니다.
- 모든 페이지 뷰 또는 무작위 표본. (무작위 표본은 모니터링 오버헤드를 줄이기 위해 매우 바쁜 사이트에서 유용합니다.)
모니터링 정보를 수집한 후에는 캡처된 쿼리를 확인하고 소요 시간별로 정렬할 수 있습니다. 또는 모니터링 정보를 파일에 저장하여 데이터베이스 운영에 정통한 사람에게 보여줄 수도 있습니다. 또는 플러그인 서버에 모니터링 정보를 업로드하여 작성자가 확인할 수 있도록 할 수도 있습니다.
사이트 사용량이 많은 시간대에 5분 간격으로 모니터링하는 것이 좋습니다. 모니터링을 완료하면 어떤 데이터베이스 작업이 가장 큰 속도 저하를 유발하는지 확인할 수 있습니다.
저장된 모니터를 플러그인 서버에 업로드해주세요. 이를 통해 저희는 여러분의 경험을 바탕으로 지속적으로 개선해 나갈 것입니다. 모니터 탭에서 ‘업로드’ 버튼을 눌러주세요.
WP-CLI 명령줄 작업
이 플러그인은 WP-CLI를 지원합니다. 테이블이 큰 경우 고성능 키를 추가하는 가장 좋은 방법은 시간 초과가 발생하지 않는 것입니다.
자세한 내용은 wp help index-mysql 명령을 사용하세요. 몇 가지 예를 들면 다음과 같습니다.
wp index-mysql status고성능 키의 현재 상태를 보여줍니다.wp index-mysql enable --all해당 키가 없는 모든 테이블에 고성능 키를 추가합니다.wp index-mysql enable wp_postmeta고성능 키를 postmeta 테이블에 추가합니다.wp index-mysql disable --all해당 키가 있는 모든 테이블에서 고성능 키를 제거하고 워드프레스의 기본 키를 복원합니다.wp index-mysql enable --all --dryrun모든 테이블에 고성능 키를 추가하는 데 필요한 SQL 문을 작성하지만, 실행하지는 않습니다.wp index-mysql enable --all --dryrun | wp db querySQL 명령문을 작성하고 이를 wp db로 파이프하여 실행합니다.
참고: –dryrun 출력 명령문을 나중에 실행하기 위해 저장하지 마세요. 플러그인은 테이블의 현재 상태에 맞춰 출력 명령을 생성합니다.
왜 이 플러그인을 사용해야 하나요?
이유는 세 가지(아마도 네 가지)입니다.
- 탄소발자국을 줄이기 위해.
- 탄소발자국을 줄이기 위해.
- 탄소발자국을 줄이기 위해.
- 사람들의 시간을 절약하기 위해서.
진지하게 말해서, 빠른 웹사이트 기술로 절약된 마이크로와트시의 전기는 빠르게 늘어나고 있으며, 특히 워드프레스의 글로벌 규모에서는 더욱 그렇습니다.
워드프레스 사이트를 더욱 효율적으로 만드는 방법에 대해 자세히 알아보려면 어떻게 해야 하나요?
사이트의 데이터베이스 효율성 향상에 도움이 되는 다양한 플러그인을 제공합니다. 자세한 내용은 여기에서 확인하세요.
크레딧
- 관리자 페이지 프레임워크를 담당한 Michael Uno.
- LiteSQLParser를 담당한 Marco Cesarato.
- Datatables.net을 담당한 llan Jardine.
- 우커머스 테이블을 제안해 주신 Leho Kraav와 Sebastian Sommer에게 감사드립니다.
- 조언을 구한, 그리고 대규모 설비를 테스트한 Japreet Sethi
- 모든 것에 대해 Rick James
- Jetbrains의 IDE 도구, 특히 PhpStorm은 정말 훌륭합니다. Jetbrains 도구 없이 방대한 코드 베이스를 탐색하는 건 상상하기 어렵습니다.
스크린샷
설치
사이트 대시보드에서 플러그인 > 새로 추가로 가서 Index WP MySQL For Speed를 검색한 후 일반적인 설치 워크플로를 따라 이 플러그인을 설치할 수 있습니다.
이 플러그인을 활성화하면 PHP 소스 파일이 필수 플러그인 디렉터리인 wp-content/mu-plugins에 복사됩니다. 일부 사이트의 설정은 웹 서버가 해당 디렉터리에 파일을 쓸 수 없도록 합니다. 이 경우에도 플러그인은 정상적으로 작동합니다. 하지만 워드프레스 코어 버전 업그레이드 후에는 도구 > MySQL 색인 페이지를 다시 방문하여 일부 테이블의 키 설정을 수정해야 할 수 있습니다. mu 플러그인은 코어 버전 업데이트 시 키 변경을 시도하는 것을 차단하기 때문입니다.
Composer
Composer를 사용하여 워드프레스 설치를 구성하는 경우 다음 명령을 사용하여 워드프레스 최상위 구성에 이 플러그인을 설치할 수 있습니다.
composer require "wpackagist-plugin/index-wp-mysql-for-speed":"^>=1.5.6"
Composer 설치 중에 플러그인은 필요한 소스 파일(이전 섹션 참조)을 “must-use plugins” 디렉터리에 자동으로 복사합니다. 이를 위해서는 최상위 composer.json 파일에 이 스크립트를 포함해야 합니다.
"scripts": {
"install-wp-mysql-mu-module": [
"@composer --working-dir=wordpress/wp-content/plugins/index-wp-mysql-for-speed install-mu-module"
],
"post-install-cmd": [
"@install-wp-mysql-mu-module"
],
"post-update-cmd": [
"@install-wp-mysql-mu-module"
]
},
FAQ
-
이것을 사용하기 전에 사이트를 백업해야 하나요?
-
네. 이미 알고 계셨죠.
-
데이터베이스 속도에 아무런 변화가 없습니다. 왜 그럴까요?
-
- 플러그인을 설치하고 활성화하는 것 만으로는 작동하지 않습니다. 도구 메뉴에서 Index MySQL 도구를 방문하는 것을 잊지 마세요. 거기에서 “지금 키 추가” 버튼을 클릭하세요.
- 규모가 작은 사이트(사용자가 적고 글이 수백 개 정도)에서는 이러한 키 없이도 데이터베이스 속도가 충분히 빠를 수 있습니다. 속도 향상은 글과 상품이 많은 대규모 사이트에서 가장 두드러집니다.
-
비표준 데이터베이스 테이블 접두사를 사용하고 있습니다. 작동할까요?
-
네. 일부 워드프레스 데이터베이스에는 비표준 접두사가 있습니다. 즉, 테이블 이름이 wp_posts와 wp_postmeta 대신 something_posts , something_postmeta 등으로 지정됩니다. 이 기능은 이러한 데이터베이스에서 작동합니다.
-
제 워드프레스 호스트는 MySQL이 아닌 MariaDB를 제공합니다. 이 플러그인을 사용할 수 있나요?
-
네.
-
이 기능은 어떤 버전의 MySQL과 MariaDB를 지원하나요?
-
MySQL 버전 5.5.62 이상, 5.6.4 이상, 8 이상. MariaDB 버전 5.5.62 이상.
-
이 기능은 어떤 데이터베이스 저장 엔진을 지원하나요?
-
InnoDB만 해당. 테이블에서 MyISAM(이전 저장 엔진) 또는 COMPACT 행 형식을 사용하는 경우, 이 플러그인은 테이블을 업그레이드해 줍니다.
-
플러그인은 어떤 테이블과 키를 변경하나요?
-
이게 안전한가요? 고성능 키를 추가하고 워드프레스 표준 키로 안전하게 되돌릴 수 있나요?
-
네. 키를 추가하고 되돌리는 것은 안전합니다. 키 변경은 일상적인 데이터베이스 유지 관리 작업입니다.
아시다시피 사이트 백업은 꼭 유지해야 합니다. 다른 요인으로 인해 데이터가 손실될 수도 있으니까요.
-
제 사이트에서는 우커머스 HPOS(고성능 주문 저장)를 사용하고 있습니다. 이 플러그인이 여전히 도움이 될까요?
-
네. 우커머스는 여전히 상점의 상품, 글, 페이지 및 사용자에 대해 핵심 워드프레스 테이블을 사용합니다. 이 플러그인은 이러한 테이블에 고성능 키를 추가합니다.
고성능 주문 저장소는 이름 그대로 매장의 주문을 더욱 효율적으로 저장합니다. 이전에는 주문이 동일한 핵심 워드프레스 테이블에 저장되었습니다.
-
이 플러그인은 다른 특정 플러그인과 호환이 되나요?
-
이 플러그인은 데이터베이스 색인만 변경합니다. 다른 플러그인이 데이터베이스 색인를 변경하지 않는다면 이 플러그인과 호환될 가능성이 매우 높습니다.
물론, 호환되지 않는 부분이 발견되면 지원 주제를 시작해주세요.
-
키를 추가하려고 하는데 치명적인 오류가 발생했습니다. 어떻게 해결할 수 있나요?
-
워드프레스용 Index WP MySQL For Speed 플러그인을 사용하여 키를 추가할 때 오류가 발생하는 경우가 있습니다. 이러한 오류는 다음과 같거나 유사할 수 있습니다.
Fatal error: Uncaught ImfsException: [0]: Index for table 'wp_postmeta' is corrupt; try to repair it우선, 당황하지 마세요. 이는 (보통) 사이트가 손상되었다는 의미가 아닙니다. 단순히 MariaDB 또는 MySQL 서버가 해당 테이블에 키를 추가하지 못했음을 의미합니다. 사이트는 계속 작동하지만, 해당 테이블에서 고성능 키의 이점을 누릴 수 없습니다. 일반적으로 이러한 오류는 매우 큰 테이블에서 발생합니다. MariaDB 또는 MySQL 데이터베이스 서버 머신의 임시 디스크 공간이 부족했을 가능성이 높습니다. 데이터베이스 서버는 사용자가 키를 추가할 때 테이블의 임시 복사본을 생성하여 사용자를 차단하지 않고 키를 추가할 수 있도록 합니다.
MariaDB 또는 MySQL 구성을 변경하면 이 문제를 해결할 수 있습니다. 자세한 지침은 여기 에서 확인하세요 .
-
워드프레스 버전이 업데이트되면 테이블과 키는 어떻게 되나요?
-
워드프레스 버전 업데이트 중에 플러그인을 활성화하면 업데이트 워크플로가 고성능 키(버전 1.4.7)를 제거하는 것을 방지합니다.
-
이게 내 다중사이트(네트워크) 워드프레스 인스턴스에서도 작동하나요?
-
네 . 여러 사이트 인스턴스에서는 네트워크 관리자 대시보드에서 플러그인을 활성화해야 합니다. 네트워크 활성화 후 각 사이트의 관리자가 Index MySQL 도구를 사용할 수 있습니다.
하위 사이트가 여러 개인 경우 WP-CLI를 사용하여 각 사이트에 고성능 키를 차례로 추가하는 것이 좋습니다. 각
blogid를 차례로 언급하면 다음과 같은 명령이 작동합니다.wp index-mysql enable --all --blogid=1 wp index-mysql enable --all --blogid=2 wp index-mysql enable --all --blogid=3 -
제 사이트에는 등록된 사용자가 수천 명이나 됩니다. 이 플러그인을 사용했는데도 대시보드의 사용자, 글, 페이지 패널이 여전히 느리게 로드됩니다.
-
많은 사용자를 처리할 수 있는 또 다른 플러그인인 Index WP Users For Speed가 있습니다. 워드프레스의 사용자 처리 방식 때문에 데이터베이스 키를 변경하는 것만으로는 이러한 성능 문제를 해결할 수 없습니다.
-
내 사이트에서 영구적 객체 캐싱을 활성화하려면 어떻게 해야 하나요?
-
영구 객체 캐싱은 사이트의 작업 부하를 줄여 데이터베이스 성능을 향상하는 데 도움이 됩니다. 자세한 내용은 여기에서 확인할 수 있습니다. 호스팅 제공업체에서 Redis 또는 Memcached 캐시 서버 기술을 제공하지 않는 경우, SQLite Object Cache 플러그인을 사용해 보세요.
-
고성능 키를 추가했을 때 테이블 크기가 커진 이유는 무엇인가요?
-
데이터베이스 키 추가는 테이블 데이터의 복사본을 무작위로 쉽게 접근할 수 있는 방식으로 구성하는 방식으로 작동합니다. MariaDB 또는 MySQL 서버는 각 테이블에 행을 삽입하거나 업데이트할 때 데이터 복사본을 자동으로 유지합니다. 또한, 키 추가 작업은 새 행을 삽입할 준비를 위해 테이블 데이터의 각 블록에서 여유 공간을 조정합니다. 여유 공간이 있으면 새 행을 삽입할 때 비교적 느린 블록 분할이 필요하지 않습니다. 오랫동안 사용되어 온 테이블은 여러 블록에 새로운 여유 공간이 필요한 경우가 많습니다. 키를 추가할 때 테이블 크기가 증가하는 것은 정상적인 현상입니다. 이는 컴퓨터 과학에서 가장 오래된 상충 관계인 시간과 공간의 관계입니다.
-
새로운 키가 테이블의 새로운 데이터에 유효할까요?
-
네. 고성능 키가 설정되면 MariaDB와 MySQL이 테이블에 데이터 행을 업데이트, 삭제 또는 삽입할 때 자동으로 해당 키를 관리합니다. 새 데이터에 키를 적용하기 위해 별도의 작업을 수행할 필요가 없습니다. DBMS 소프트웨어가 자동으로 처리해 줍니다.
-
이 플러그인의 동작을 취소하고 워드프레스의 표준 키로 되돌리려면 어떻게 해야 하나요?
-
도구 메뉴의 Index MySQL 도구에서 키를 되돌리거나 wp-cli 명령어
wp index-mysql disable --all사용할 수 있습니다. 이 작업을 수행하지 않고 플러그인을 비활성화하거나 삭제하면 고성능 키가 그대로 유지됩니다 . -
다른 질문에 대한 답변을 얻으려면 어떻게 해야 하나요?
-
더 많은 질문과 답변을 여기에서 확인하세요.
후기
기여자 & 개발자
변경이력
1.5.6
- (No changes to keys).
- Correct composer compatibility issue.
- Upgrade to the latest Datatables.net code.
- Suppress reversions to keys when the WooCommerce installer runs.
1.5.4
PHP 5.6 호환성 문제 해결.
1.5.3
언어 지원 중단 해결, IIS에서 테스트.
1.5.2
릴리스 오류 해결.
1.5.1
우커머스 테이블 wp_automatewoo_log_meta, wp_wc_orders_meta, wp_woocommerce_order_itemmeta에 대한 지원을 추가합니다.
1.4.19
해당 파일을 사용할 수 있는 경우 meminfo 및 procinfo를 사용하여 호스트 머신에 대한 정보를 보고합니다.
1.4.18
보안 업데이트.
1.4.17
이전 버전의 다양한 버그 수정을 취소했습니다. 이는 쿼리 모니터의 후크 표시 경고를 피하기 위한 조치였습니다.
전체 MariaDB/MySQL 버전 정보를 모니터 및 메타데이터와 함께 업로드해 주세요.
1.4.16
(키 변경 없음)
워드프레스 6.5 호환성
MDDHosting 요청에 따라 워드프레스 4.2 버전까지 지원합니다.
MyISAM 및 Aria를 제외한 저장소 엔진에서 업그레이드하지 마세요.
WP-CLI upgrade, enable 및 disable 명령은 이제 멱등성을 갖습니다. 처리할 테이블이 없어도 오류가 발생하지 않습니다.
기타 버그 수정






