0
mysql과 node.js.를 사용하고 있습니다. 나는 두 명의 사용자의 채팅을로드하기 위해 '이전 채팅로드'버튼이 있습니다. 버튼을 클릭하면 @ 12 라인/초 (수동으로 테스트)의 결과가 나타납니다. 어떻게 빨리 처리 할 수 있습니까? 내 응용 프로그램은 스카이프 반면 12 개 라인/초 @ 결과를주고 나는 더를 최적화 할 수있는 방법최소한의 시간에 데이터베이스에서 데이터 가져 오기
socket.on('chatHistoryMaintain', function(data){
for(i=0;i<data.sum;i++)
{
if(data.result[i].sender==data.nickname)
{
$('#chat-messages ul').append('<li class="marker"><div class="fl sender">'+nickname+' : </div><div class="fl text1">'+data.result[i].msg+'</div></li>');
}
else
{
$('#chat-messages ul').append('<li class="marker"><div class="fl receiver">'+nickname+' : </div><div class="fl text">'+data.result[i].msg+'</div></li>');
}
}
});
을 - 다음은 서버 사이드 -
socket.on('chatHistory', function(data){
var count=0;
connection.query("SELECT * FROM chatRecord WHERE uniqueRoomId = '"+data.roomId+"' ", function(err, result, fields) {
if (err) throw err;
for (var j in result)
{
if (rows3.hasOwnProperty(j)) count++;
}
var k=0;
if(result[0])
{
socket.emit('chatHistoryMaintain', {result:result,sum:count,nickname:data.nickname});
}
});
});
클라이언트 측 코드에 내 코드
입니다 1560 라인/초만큼 빠름? 내가 뭘 잘못하고있어? 여기
내 데이터베이스 엔진
의 세부 사항입니다> +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
> | Engine | Support | Comment | Transactions | XA | Savepoints |
> +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
> | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
> | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
> | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
> | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO
> |
> | MyISAM | YES | MyISAM storage engine | NO | NO | NO |
> | CSV | YES | CSV storage engine | NO | NO | NO |
> | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
> | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
> | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
> +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
몇 가지 이유가있을 수 있습니다. uniqueRoomId 열에 색인이 있습니까? chatRecord에는 몇 행이 있습니까? 데이터베이스가 사용하는 엔진은 무엇입니까? 귀하는 귀하의 질의에 대한 설명을 게시 할 수 있습니까? 서버의 하드웨어에 대한 자세한 정보가 있습니까? – Peavey
예 uniqueRoomId에 색인이 있습니다. chatRecord에는 30,000 개의 행이 있습니다. 데이터베이스 엔진 세부 사항에 대한 내 질문을 편집했습니다. 서버 하드웨어에 대해 무엇을 알고 싶습니까? – Vardan
@Peavey 어떤 생각? – Vardan