2014-07-08 3 views
0

저는 GameObject의 설정된 수에 대한 정보를 제공하기 위해 데이터베이스에 액세스해야하는 유니티의 응용 프로그램에서 작업하고 있습니다.유니티 게임 객체에 연결된 데이터베이스 연결/쿼리

public class Fill : MonoBehaviour { 
    static string connectString = 
    "Server=blah;" + 
     "Database=blah.org,3500;" + 
     "User ID=blahman;" + 
     "Password=blah42;"; 

    static SqlConnection cn = new SqlConnection(connectString); 
    public string PublicVar; 
    void Start() { 
     string sCommand = string.Concat("SELECT blah from blah.table where row =", transform.GameObject.name); 

     //FILL PUBLIC VARIABLE FOR _______ 
     SqlDataAdapter da = new SqlDataAdapter(sCommand, cn); 
     cn.Open(); 
     DataTable dataTable = new DataTable(); 
     int rec = da.Fill (dataTable); 
     foreach (DataRow row in dataTable.Rows) { 
      //Debug.Log ("--- Row --- "); 
      foreach (var item in row.ItemArray){ 
       //Debug.Log ("Item "); 
       //Debug.Log (item); 
       PublicVar = item.ToString(); 
      } 
     } 
     cn.Close(); 

    } 


    } 

나는 현재 일부 상당한 시간이 오버 헤드가 발생 해요 :

현재, 좀 공용 변수, 이런 식으로 뭔가를, 연결을 설정 데이터베이스를 쿼리 각 게임 오브젝트에 스크립트를 첨부하고, 채우고했습니다 이 장면을 실행하기 시작할 때, 분명히 데이터베이스가 여러 다른 게임 객체 (> 20)에 대한 '시작'메소드에 연결되고 쿼리되고 있기 때문입니다.

내 질문은 다음과 같습니다.이 오버 헤드는 어디서 발생합니까? 쿼리 자체, 연결, 데이터 어댑터에 있습니까? 하나의 글로벌 연결 또는 싱글 톤을 설정하고 모든 스크립트에 액세스하도록하는 것이 더 나은 설계입니까? 현재 사용중인 모델이 가장 직관적 인 것처럼 보였지만 더 나은 성능이 필요합니다.

감사합니다.

답변

0

원격 데이터베이스는 대기 시간을 추가합니다. 요청 당 100ms라고 말하십시오.

개별 개체 선택은 모든 개체의 목록을 가져 와서 필요한 경우 테이블을 조인하여 데이터를 한 번만 읽고 따라서 20 회가 아닌 100 밀리 초 (데이터 전송)의 단일 요청으로 대기 시간을 줄입니다. 100 ms.

관련 문제