2011-10-20 3 views
0

아직 사이트 디자인의 시작 단계에 있기 때문에 지금이 질문을하기에 좋은 시점입니다.MySQL 성능 : 많은 행과 열 (MyISAM)

MySQL 쿼리를 최적화하는 방법 중 하나는 행을 별도의 테이블로 분할하는 것이지만 몇 가지 편의 문제가 있다는 것을 알고 있습니다. 테이블을 splittiing보다 훨씬 높은 서버 부하에서 각 쿼리 결과 만 필요한 열을 우수하게 설계된 인덱스를 사용하고 점점 주위 1'000'000 행과 150 열로 구성된 테이블을 쿼리 것 :

은 내가 고려하고있어 이것이다 여러 항목으로 나누어서 더 적은 collumns를 만들 수 있습니까?

답변

2

큰 덩어리 표는 반 패턴이며 사용하지 마십시오.

정규화 된 테이블은 단일 BLOB보다 훨씬 빠르게 실행됩니다.
InnoDB는 조인이 필요한 많은 작은 테이블에 최적화되어 있습니다. 당신 외에 많은 두통이 저장됩니다 정규화 된 테이블을 사용

: 귀하의 데이터가 작아집니다

  1. 을, 그것의 너무 많은 메모리에 적합합니다.
  2. 데이터는 한 곳에서만 저장되므로 일관성없는 데이터로 끝날 수는 없습니다.
  3. MySQL은 단지 테이블 당 하나의 인덱스를 사용할 수 있도록 허용합니다. 다중 테이블은 더 많은 인덱스를 사용하고 더 많은 속도를 얻음을 의미합니다.
  4. 테이블에서 트리거가 훨씬 빠르게 실행됩니다.
  5. 정규화 된 테이블을 유지 관리하기가 더 쉽습니다.
  6. 테이블 당 인덱스가 적어 삽입 속도가 빠릅니다.
  7. 색인은 더 작고 (행이 적음) 좁혀지고 (열은 적습니다.) 결과적으로 훨씬 빠르게 실행됩니다.
+0

나는 그 점들을 정말로 생각하지 못했습니다. 고맙습니다, 나는 그것을 반드시 고려할 것입니다. –

0

데이터가 정적 인 경우 효율성을 높이기 위해 테이블을 압축 할 수 있습니다. 여기가 page in the reference manual

+0

불행히도 약 90-95 %가 동적입니다. –