2010-03-10 6 views
1

우리는 페이지에 표시하는 HTML 소스 데이터를 저장하는 "html_view"열이있는 18GB의 mysql 테이블을 가지고 있지만 "html_view"열에서 html 데이터를 가져 오는 데 너무 많은 시간이 소요됩니다. 페이지로드가 느립니다.데이터베이스에서 HTML 데이터를 읽는 속도가 느립니까? 더 나은 접근법이 필요하십니까?

우리는 기존 구조를 단순화하여 데이터베이스에서 또는 다른 방식으로 html 데이터를 더 빨리로드 할 수있는 방법을 원합니다.

HTML 데이터를 .txt 파일에 저장하고 db에 txt 파일의 경로 만 저장하고 파일을 읽음으로써 해당 파일에서 데이터를 가져옵니다. 그러나 우리는 서버에서 광범위한 읽기 쓰기 작업을 수행하고 서버 속도를 늦출 수 있습니다.

이 상황을 더 빠르게 만드는 더 좋은 방법이 있습니까?

+0

어떤 애플리케이션/웹 서버를 사용하고 있습니까? 메모리에서 데이터를 가져올 가능성이 더 커지므로 이러한 구성 요소의 캐싱 기능을 살펴 봐야합니다. – weismat

+0

웹 플랫폼으로 "Apache/PHP/MYSQL"을 사용하고 있습니까? 우리가 할 수있는 일이 있다면, 어떤 예나 기사를 나눠주십시오. 감사합니다 – Prashant

답변

2

우선 HTML을 데이터베이스에 저장하는 이유는 무엇입니까? 왜 필요에 따라 렌더링하지 않습니까?

큰 텍스트 테이블의 경우 압축 된 텍스트를 바이트 배열로 저장하거나 압축하여 Base64로 일반 텍스트로 인코딩 할 수 있습니다.

큰 텍스트 열이있는 배열을 사용하면 테이블에 몇 개의 다른 열이 있습니까? 너무 많지 않으면 테이블을 분할하고 두 개의 열 키 - 값 저장소를 만들 수 있습니다. 디스크에서 파일을 읽는 것보다 빠르고 간단해야합니다.

+0

우리의 오래된 구조는 데이터베이스에 HTML을 저장하는 것을 기반으로하므로 일찍 변경할 수 없기 때문에 지금은 성능을 향상시킬 수있는 약간의 변경을 계획하고 있습니다. "압축 된 텍스트를 바이트 배열로 저장"하거나 "압축하여 base64로 일반 텍스트로 인코딩"한 것보다 빠르며 구현 방법은 PHP 예제를 공유 할 수 있습니까? – Prashant

+1

PHP를 모르지만 다음 도움말을 참조하십시오. http://php.net/manual/en/ref.zip.php. 바이트 배열은 base64보다 간단하고 작으며 빠릅니다. –

1

Apache Caching guide을 살펴보십시오.
디스크 및 메모리 캐싱에 대해 설명합니다. 콘텐츠가 정적 인 경우 (databae 테이블이 나타내는 것처럼) 여러 레이어를 추가하기 때문에 느린 메커니즘을 작성하는 대신 Apache 기능을 사용해야합니다.
견적 대신에 일반적인 척도가 여전히 적용됩니다 ;-).

관련 문제