2011-02-25 7 views
3

안녕
나는이 질문이 여러 번 논의 된 것을 안다.
하지만 WordPress 블로그의 큰 테이블에 대해 구체적인 질문이 있습니다.
100K 이상의 게시물 태그가있는 게시물이 약 50,000 개 있습니다.
검색 할 때 많은 메모리와 CPU 리소스가 필요합니다.
현재 저는 wp_posts와 wp_posts_meta 모두에 MyISAM을 사용하고 있습니다.
여러분의 의견을 알고 싶습니다. InnoDB로 변경해야합니까?큰 테이블 Wordpress 블로그를위한 InnoDB 대 MyISAM

WordPress 블로그 호스트 인 CentOS 5를 사용하여 2GB RAM 및 4 코어 CPU가있는 vps에 있습니다. 그리고 MySQL 캐시 구성을 최적화하고 데이터베이스 캐시 플러그인을 사용하려고했습니다.

InnoDB가 내 문제를 해결할 예정입니까? 그리고 전에 물어 보면 용서해주세요. 너의 전문가 의견을 알고 싶다.

감사

이반

답변

2

queryplan을 볼 수 귀하의 느린 SELECT 문에 사용 EXPLAIN. 이제는 왜 일이 느리고 모든 기억을 먹는지 추측 할 수 있습니다. 오른쪽 열의 색인을 생성 했습니까? 당신의 SQL은 정확하게 쓰여졌습니까?

대부분의 활동이 읽기 전용 일 때 MyISAM이 정상적으로 작동해야합니다. MyISAM은 또한 전체 텍스트 검색 기능을 제공합니다. innoDB에는 전문 검색 기능이 없습니다.

2

전환 테이블 유형으로 검색 속도가 향상되지 않습니다. InnoDB는 잠금 문제가있는 경우에만 도움이됩니다. 블로그 데이터가 많이 바뀌지 않으므로 잠금 문제가 발생할 가능성이 거의 없습니다. 전체 텍스트 검색과 관련된 문제 인 것 같습니다. 전체 텍스트 인덱스를 추가하고 검색을 위해 해당 인덱스를 사용하는 플러그인을 찾습니다.

+0

네, 그걸로 갈 것입니다. [Sphinx Plugin for WordPress] (http://wordpress.org/extend/plugins/wordpress-sphinx-plugin/)는 스핑크스 엔진을 사용하여 검색이 필요한 대형 사이트에서이를 돕도록 특별히 설계되었습니다. 물론 Sphinx를 설치해야 할 필요가 있습니다. 그러나 자신의 VPS라면 문제가되지 않습니다. CentOS 용 패키지가 있어야합니다. –

3

게시물 및 페이지 개정을 지우면 WP 데이터베이스의 크기가 최대 90 %까지 커지고 속도가 크게 향상됩니다.

개정판을 삭제하려면 phpmyadmin에서 SQL 쿼리로 실행하십시오. 필요에 따라 변경 테이블 접두사 :

DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_type = 'revision'

그런 다음 모든 테이블을 최적화 할 수 있습니다. 그리고 미래의 버전을 사용하지 WP-config.php를 위쪽에

define ('WP_POST_REVISIONS', FALSE);

를 추가합니다.

관련 문제