내가 2 개 MySQL의 서버MySQL은 5.0.51
이 perfomance 문제 5.1.66 대서버 A는 MySQL은 5.0.51이 - 8기가바이트 RAM 단일 쿼드 코어 서버 B는 MySQL은 5.1.66을 가지고 - 64 기가 바이트 RAM - 배 쿼드 코어를 U가 서버 A에가 27초
에 완료사용자로부터 다음 쿼리
select FULLNAME ,(select COUNT(*) FROM ORDERS S, ACCOUNTS T WHERE S.CREATED BETWEEN '2013-04-21 00:00' AND '2013-04-27 23:59' AND S.ACCOUNT=T.ACCOUNT AND T.USERNAME=U.USERNAME AND T.CUSTOMERSTATUS = 'Donation'
and T.TIMEST=
(SELECT TC.TIMEST FROM DETAILS A, ACCOUNTS TC WHERE S.ACCOUNT=A.ACCOUNT AND A.ACCOUNT = TC.ACCOUNT AND T.USERNAME=U.USERNAME AND T.CUSTOMERSTATUS = 'Donation' AND A.ANAL16 <> 'Cheque' order by TIMEST DESC LIMIT 1))
실행
서버 B에서는 끝내지 않습니다. 400 초 동안 데이터를 보낸 후 방금 종료했습니다. 여기
서버의 구성 변수 인join_buffer_size 131072
key_buffer_size 16777216
myisam_sort_buffer_size 8,388,608
net_buffer_length 16384
preload_buffer_size 32768
read_buffer_size 131072
read_rnd_buffer_size 262144
sort_buffer_size 2,097,144
및 서버 B
join_buffer_size 131072
key_buffer_size 16777216
myisam_sort_buffer_size 8,388,608
net_buffer_length 16384
preload_buffer_size 32768
read_buffer_size 131072
read_rnd_buffer_size 262144
sort_buffer_size 2,097,144
SQL_BUFFER_RESULT OFF
더 빠르고 더 강력한 서버에서 왜 완료되지 않는지 알 수 없습니다.
온라인으로 몇 게시물을 찾았지만 모두 '색인 생성'문제라고 언급했으나 2 대의 컴퓨터간에 어떤 차이가 있는지를 짐작할 수 없었습니다. 오늘 아침 모든 색인과 모든 항목을 가지고 덤프를 가져 왔습니다. 다시 벌금을 벌었 어.
도움이 될 것입니다. 여전히 같은 -
1 PRIMARY U ALL NULL NULL NULL NULL 57 Using where; Using temporary; Using filesort
3 DEPENDENT SUBQUERY S ALL PRIMARY,ACCSTO0472 NULL NULL NULL 3948 Using where; Using temporary
3 DEPENDENT SUBQUERY T ref PRIMARY,TELCOM0473 TELCOM0473 9 func 1 Using where
4 DEPENDENT SUBQUERY TC ref PRIMARY,TELCOM0472 PRIMARY 98 tms42_gg.S.ACCOUNT 2273 Using where; Using temporary; Using filesort
4 DEPENDENT SUBQUERY A ref PRIMARY,RCMANL0472,RCMANL0473 RCMANL0473 98 tms42_gg.S.ACCOUNT 1 Using where; Using index
2 DEPENDENT SUBQUERY R ALL PRIMARY NULL NULL NULL 636 Using where; Using temporary
2 DEPENDENT SUBQUERY T ref PRIMARY,ACCSTO0122 ACCSTO0122 250 tms42_gg.R.ACCOUNT,tms42_gg.U.USERNAME 1 Using where
서버 B
| 1 | PRIMARY | U | ALL | NULL | NULL | NULL | NULL | 57 | Using where; Using temporary; Using filesort |
| 3 | DEPENDENT SUBQUERY | S | ALL | PRIMARY,ACCSTO0472 | NULL | NULL | NULL | 3948 | Using where; Using temporary |
| 3 | DEPENDENT SUBQUERY | T | ref | PRIMARY,TELCOM0473,TELCOM047J,TELCOM047JR | TELCOM0473 | 9 | func | 1 | Using where |
| 4 | DEPENDENT SUBQUERY | TC | index | PRIMARY,TELCOM0472,TELCOM047J,TELCOM047JR | TELCOM0473 | 9 | NULL | 1 | Using where; Using temporary |
| 4 | DEPENDENT SUBQUERY | A | ref | PRIMARY,RCMANL0472,RCMANL0473 | RCMANL0473 | 98 | tms42_gg.S.ACCOUNT | 1 | Using where; Using index |
| 2 | DEPENDENT SUBQUERY | R | ALL | PRIMARY | NULL | NULL | NULL | 636 | Using where; Using temporary |
| 2 | DEPENDENT SUBQUERY | T | ref | PRIMARY,ACCSTO0122 | ACCSTO0122 | 250 | tms42_gg.R.ACCOUNT,tms42_gg.U.USERNAME | 1 | Using where
서버 코드 설명과
가업데이트 나는 SESSION SQL_BUFFER_RESULT는 두 곳에서 설명 실행 = ON하기 전에 설정 결과!
를 용서하십시오의'explain'을 - : 나는 당신이 일을하려고하지만, 이런 식으로 뭔가를 레코딩하려고하는 매우 것을 이해 확실하지
두 서버에서 쿼리하고 차이점을 찾습니다. 서버 설정은 다르다 - 서버 B는'sql_buffer_result'가 OFF로 설정되어있다. –
'ANAL16' 열 이름에 대한 명성이 나를 괴롭혔다. –
테이블 유형이 동일합니까? –