2012-07-09 3 views
0

Google 제품 피드 인 XML 파일을 작성하려고하지만 속도가 매우 느립니다.데이터베이스에서 XML 파일을 만드는 중 성능 문제가 발생했습니다.

Google 검색을 꽤 많이 했으므로 작은 파일로 나누는 것 외에는 가장 빠른 방법은 확실하지 않습니다.

저는 현재 약 3500 개의 제품을 가지고 있으며 이것이 제가하고있는 것입니다.

Dim fs As New FileStream(HttpContext.Current.Server.MapPath("LOCATION OF FEED XML"), FileMode.Create) 
Dim writer As New XmlTextWriter(fs, System.Text.Encoding.UTF8) 

writer.WriteStartDocument() 
    ' ==== LOAD DATABASE INTO OdbcDataReader CALLED 'd' ==== ' 
While d.Read 
    try 
     writer.WriteStartElement("item") 

     writer.WriteStartElement("g:id") 
     writer.WriteString(pID) 
     writer.WriteEndElement() 
     '==== etc 
    catch 
     ignore broken ones 
    end 
End While 

    writer.WriteEndElement() 
    writer.WriteEndDocument() 
    writer.Close() 

d.Dispose() 
connection.Dispose() 
connection.Close() 

나는, 그래서 정말 쓰기에 관한 정확히 어디에 여기에 무슨 일이 일어나고 있는지 FileStream, MemoryStream 등 익숙하지입니다.

아마도 메모리에 쓰는 것이 더 빨라지 겠지만, 그렇게하고 디스크에 저장하는 과정은 무엇입니까?

데이터 양이 메모리 문제일까요?

은 분명히 나는 ​​.NET 2.0

감사 어떤 제안을 사용하여, VB로 코딩하고 있습니다.

답변

0

성능 문제는 서면으로 보이지 않지만 느린 성능을 유발하는 읽기와 같습니다. 어디서 데이터를 읽었습니까? 데이터 베이스? 그러면 성능 병목 현상이 발생합니다.

+0

감사합니다. 그래서 내가 쓰고있는 write 메소드가 퍼포먼스를위한 최선의 방법이라는 말입니까? 그 때 사용하는 것보다 데이터 집합을 반복하는 더 빠른 방법이 있습니까? 나는 MySQL 데이터베이스와'OdbcDataReader'를 사용하여 쿼리가 충분히 빠르기 때문에 느린 데이터를로드하지는 않지만 쓰는 과정에서 뭔가가 발생합니다. –

+0

오, 나는 그런 바보 야! 나는 각 레코드를 읽는 동안 데이터베이스로 돌아가는 내 배송 데이터를 얻는 것을 깨달았습니다! 도! 처리하는 데 약 60 초 정도 걸리지 만 50 % 향상되며 몇 가지 추가 문제가 있음을 알았습니다. 감사! –