WordPress DB 성장을 계획하기위한 좋은 전략은 무엇입니까?


9

WordPress 데이터베이스가 커짐에 따라 성능을 최적화하고 최상의 성능을 유지하는 주제에 대한 피드백을 기대하고 있습니다. ... 시간이 지남에 따라 사용자는 블로그, 포럼, 게시물 및 의견을 추가하고 데이터베이스는 5mb로 증가하고 다음 해에는 10mb로 증가합니다. 또한 호스팅 제어가 Cpanel 또는 Plesk와 같은 표준 배치 설정이라고 가정합니다.

  • 데이터베이스의 항목 수는 프런트 엔드 웹 사이트의 성능에 어떤 영향을 줍니까?
  • 데이터베이스가 커짐에 따라이를 원활하게 유지하기 위해 웹 사이트 관리자로서 무엇을 할 수 있습니까?
  • 데이터베이스의 크기가 500-600MB 인 5 년 후 성능 측면에서 무엇을 기대할 수 있습니까?

꽉 조이는 선박에 대한 의견을 보내 주셔서 감사합니다.

문안 인사,

에스.


3
당신은 7 질문을하고 1 만 수락했습니다. 좋은 기록이 아닙니다. :-(

8
25mb는 아무것도 아닙니다. GB에 도달하면 데이터베이스 크기에 대해 걱정해야합니다.
Dunhamzzz

의견 주셔서 감사합니다. 500MB의 성능에 문제가 있다면 아마도 호스팅 회사 일 것입니다. PS 질문으로 돌아가서 답변을 받았습니다.
시몬

답변:


4

구체적인 질문 :

1) 성능에 영향을 미치기 전에 DB에 포함될 수있는 "항목 수"에 대한 제한은 없습니다. 성능은 DB의 크기와 구조와 마찬가지로 하드웨어와 구성에 달려 있습니다.

2) DB 계층의 확장 성이 걱정되는 경우 클러스터 또는 크기 조정이 가능한 클라우드 박스 또는 VPS에서 실행할 수 있습니다. DB가 느리게 시작되면 크기를 늘릴 수 있습니다 (보통 추가 비용이 들지만). 이러한 옵션은 비용을 추가하지만 실제로 DB의 확장 성을 보장하는 가장 좋은 방법입니다.

3) 이것은 실제로 호스팅 설정 및 DB 아키텍처에 따라 다릅니다. 그러나 일반적으로 ( 실제로 저렴한 상자를 제외하고는 제외하고) 30MB WordPress 데이터베이스에 대해서는 걱정하지 않습니다. WordPress는 테이블 인덱싱을 잘 수행하며 OOB MySQL 구성 조차도이 크기의 DB에서 WordPress 쿼리를 쉽게 처리해야합니다. 기가 바이트에 도달하면 성능 최적화 옵션을 진지하게 살펴볼 필요가 있습니다.

일반적으로 :

성능이 걱정되는 경우 기존 MySQL 설정 조정 및 / 또는 캐싱 계층 설정에 집중하십시오. 캐싱은 MySQL에 대한 부담을 크게 줄일 수 있습니다 (특히 WordPress 사이트의 경우 일반적으로 많은 수의 DB 쿼리를 수행하므로).

MySQL을 올바르게 조정하고 적절한 캐싱 계층을 설정 한 후에도 여전히 하드웨어 구성이 커질 까봐 걱정되는 경우 x 시간이 지나면 콘텐츠를 삭제하는 정책을 수립 할 수 있습니다.

이 중 어느 것도 WordPress에만 국한되지 않습니다. 그리고 나는 확실하지 질문이 적용되지 않는 답변 가지고있어 어떤 램프 스택에 웹 사이트 나 응용 프로그램을 실행합니다. 그러나 다른 누군가가 MU 테이블 구조 또는 다른 WP 관련 DB 트릭에 관한 제안을 할 수도 있습니다 ... I dunno.


4

엄밀히 말하면 MySQL 관점에서 MySQL 인스턴스의 데이터 / 인덱싱 캐싱을 개선하는 방법에 대한 제안이 있습니다.

MySQL에는 두 가지 주요 스토리지 엔진이 있습니다.

  • MyISAM
  • InnoDB

캐싱 메커니즘은 다릅니다. 선택한 스토리지 엔진에 맞게 조정할 수있는 작업이 있습니다.

MyISAM

MyISAM은 인덱스 페이지 만 캐시합니다. 데이터를 캐시하지 않습니다. MyISAM 테이블의 I / O를 향상시키기 위해 두 가지 작업을 수행 할 수 있습니다.

MyISAM 개선 # 1

VARCHAR 열이있는 MyISAM 테이블은 초기 디자인을 건드리지 않고 내부적으로 CHAR로 변환 할 수 있습니다. mydb.mytable이라는 테이블이 있고 I / O를 향상 시키려면 다음을 수행하십시오.

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

이렇게하면 테이블 크기가 60 % -100 % 증가하지만 다른 것을 변경하지 않고 I / O에서 20-30 % 성능이 향상됩니다 . 나는 전에 DBA StackExchange에서 이것을 썼다.

MyISAM 개선 # 2

key_buffer_size 크기로 MyISAM 키 캐시를 늘려야합니다 . 이 쿼리를 실행하십시오 :

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;

현재 데이터 세트를 기반으로 이상적인 key_buffer_size가 표시됩니다.

InnoDB

InnoDB는 데이터와 인덱스를 모두 캐시합니다. 모든 데이터를 InnoDB로 변환하고 현재 모든 InnoDB 데이터베이스에서 WordPress를 실행중인 경우 InnoDB 버퍼 풀 ( innodb_buffer_pool_size 크기로 조정 )의 크기를 조정해야합니다 . 이 쿼리를 실행하십시오 :

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;

현재 데이터 세트를 기반으로 이상적인 key_buffer_size가 표시됩니다.

프로젝션

데이터 세트가 20 배나 증가 할 것으로 예상하는 경우이 쿼리에서 권장하는 것을 20으로 여러 번 늘리십시오. MyISAM 데이터 세트가 15MB이고 3MB가 인덱스의 합이라고 가정하십시오. 20 배 많은 데이터가있을 것으로 예상되는 경우 /etc/my.cnf에서 key_buffer_size를 60MB로 설정하십시오.

[mysqld]
key_buffer_size=60M

그런 다음 MySQL을 다시 시작하십시오. InnoDB 버퍼 풀에도 동일하게 적용됩니다.

모든 데이터가 InnoDB 인 경우 StackOverflow에 게시 한 InnoDB 인프라전체 정리 를 수행해야합니다 .


2

데이터베이스의 항목 수는 프런트 엔드 웹 사이트의 성능에 어떤 영향을 줍니까?

쿼리가 호스팅 계정의 리소스 제한에 도달하기 시작하면

데이터베이스가 커짐에 따라이를 원활하게 유지하기 위해 웹 사이트 관리자로서 무엇을 할 수 있습니까?

자원 사용을 주시하십시오. 리소스를 늘리거나 사용을 최적화하기위한 단계를 수행하십시오.

데이터베이스의 크기가 25-30MB 인 5 년 후 성능 측면에서 무엇을 기대할 수 있습니까?

작은 데이터베이스에서 성능에 변화가 없어야합니다.

사이트가 느리게 성장할 것으로 예상되면 성장 관리 방법을 배울 시간이 충분합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.