2013-05-10 2 views
0

MySQL 데이터베이스를 최적화하려고합니다. 저는 거의 90 개의 테이블을 거의 사용하지 않았습니다. 내 웹 사이트를 운영하는 엄청난 양의 작업은 10 분 정도 밖에 걸리지 않습니다.MySQL 테이블 캐시 및 tmp 디스크 테이블 최적화

MySQL 상태 통계는 2.5 일 동안 약 2M 쿼리를 보여 주며 "Opened_tables"는 1.7k (Open_tables 256 포함)로보고합니다. 256에서 table_cache를 32에서 증가 시켰습니다.

열려있는 테이블의 대부분은 다른 연결의 일부 테이블 또는 일부 임시 테이블 중 하나라고 가정합니다.

동일한 기간에 19.1k의 "Created_tmp_tables"및 5.7k의 더 많은 성가신 Created_tmp_disk_tables를보고합니다. 나는 max_heap_table_size와 tmp_table_size를 모두 128M로 설정했다.

최선을 다해 인덱스를 최적화하려고 시도했으며 디스크 사용을 피하기 위해 BLOB 및 TEXT 필드를 피하려고했습니다.

개선하기 위해 제안할만한 것이 있습니까?

+0

하위 쿼리를 사용합니까? –

+0

아니요. 나는 그것들을 피하려고 노력했습니다. –

답변

0

우선, MySQL 데이터베이스가 이러한 내부 통계를 기반으로 제대로 수행되지 않는다고 결론 지어서는 안됩니다. tmp 테이블에는 아무 문제가 없습니다. 실제로 주문이나 요약과 관련된 쿼리는 생성이 필요합니다.

두 번째 장비에서 보낸 시간을 분석 한 후 차량을 수리하려고하는 것과 같습니다. 거의 1 % 미만의 쿼리가 tmp 테이블을 생성합니다. 좋습니다. 이 수는 이러한 쿼리가 생산이 아닌 백업 또는 일종의 유지 보수 작업을 수행 할 수있을만큼 충분히 낮습니다.

성능상의 문제가있는 경우 특정 쿼리가 너무 느리게 작동하고 웹 응용 프로그램의 특정 페이지가 느리기 때문에 알 수 있습니다. 어떤 쿼리에 문제가 있는지 파악할 수 있습니까? 당신을 도울 수있는 느린 쿼리 로그가 있습니다. 당신이 충분한 RAM이있는 경우

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

당신은 증가 tmp_table_size 변수를 시도 할 수 있습니다. 몇 메가 바이트까지 가져 가서 상황이 나아 졌는지 확인해보십시오. 그러나 그들은 아마도 눈에 띄게 바뀌지 않을 것입니다.

+0

감사합니다. 매우 도움이됩니다. –