저는 그동안 SQLite 데이터베이스 및 다른 일정 기간 머물고 판독값 best practice 를 위해 특별히. 내가 찾은 많은 일을 하고 있었는데 내가 shouldn& # 39 를 읽을 때, 이러한 문제를 해결하기 위해 내가 할 때 그 때 무슨 생각을 하고 있으며 t be 혼란을 겪고 있는 일부 보다 자세히 SQLite 를 사용하여 it& # 39 의 ADO 구축상의.
특히 내 것이 혼란을 충스러웠으니 prepared statements 와 연결 풀링.
내가 할 수 있는 동안 판독값 http://msdn.microsoft.com/en-us/library/ms971481.aspx 연결용으로 이벤트여야만 연 kingdome. seattle. 트랜잭션입니다. 일단 트랜잭션까지 완료하십시오 연결 후 닫아야 합니다. 내가 할 수 있다 하지만 난 그 이유를 짐작할 수 없는 raleys 경우. 끕니까 행한 것으로 가정하고 작가 (s) 더 잘 알고 있다는 사실을 알고 난, 그 때, 실제로 이 doesn& 연결이 끊길 # 39 는 닫힌 t mean it. 이는 단순히 그동안 동일팔레트에 다시 풀 의미다.
난 지금 내 쿼리에는 삽입물의 향상시키십시오 검토완료 응벌을 사용하여 명령문입니다. https://stackoverflow.com/questions/1703203/in-sqlite-do-prepared-statements-really-improve-performance 과 http://petesbloggerama.blogspot.com/2007/02/sqlite-adonet-prepared-statements.html 모두 사용할 수 있도록 하는 것을 나타내는 것으로 쿼리하지 실행할 때 여러 번 수행됨 응벌을 명령문입니다 오른길로 갈 길. 나는 또 한 번 읽고 있는 문이 닫힌 응벌을 특정 연결, 그리고 그 연결이 준비한 성명에서 실주했습니다.
내 혼란을 로만스였나. 만약 제가 열고 닫는 내 연결 (nsr/res 짓궂군요 연결이 기술입니까 단힌 스레드할 인해 풀 수도 있고 그렇지 않을 수도 있습니다) 을 사용하여 에서 준비한 성명에서 알마예요 가져오는 나는 누구지? 이해할수 있는 저장하라는 데릭쉐퍼드와 객체에는 할 경우 1000년 한 번의 트랜잭션까지 준비한 성명에서 많은 도움이 될 수 있습니다. 그러나 내가 don& # 39 에서 볼 수 있는 하나의 개체, t believe 꼭 이래야겠어요 절약합니다 트랜잭션까지 닫으십시오 때문에 내가 한 번 연결이 준비한 성명에서 시작한 첫 생성된 객체인지 이제 손실됩니다. 이것이 진정한 기술서임을?
내가 내 충분한 정보가 사실에 의해 기획 범위 내 스크리테코먼드 객체에는 ᄀ군의 준비한 성명에서 방식을 채택하고 있다.
만약 내가 자주 스크리테코먼드 만들 것을 막을 수 있는 쿼리하지 나타내는 내아기마저도 실행될 수 있는 메모리를 준비한 성명에서 임상의들의 활성화됨 스크리테코먼드 필요합니까?
만약 내가 스크리테코먼드 기술서임을 이것은 SQLite 와 같은 새로운 것을 만들 수 있음을 새로운 스크리테코먼드 이전 및 카타시안 는 사용할 수 있는 것과 같은 준비한 성명에서?
만약 내가 계속 스크리테코먼드 it& # 39 의 메모리 및 변경, s 매개변수입니다 및 연결 as I 에 대한 접속이 트랜잭션입니다 본질적으로 다른 것은 내가 살아 있는 준비한 성명에서 열고 닫을 간의 서로 다른 접속에만?
내가 생각하는 것을 통해 대부분 이 시점에서 더 잘 이해할 수 있지만 이런 것들을 어떻게 상호 바래요 돕는다구요 내려받습니다 가운데 가장 많은 혜택을 누릴 수 있다고요.
도움이 된다는 것에 한계가 있는 문이 모두 연결 풀링 (컴파일됨) 및 응벌을 없고 그냥 툴과도 똑같이 가능한 모든 상황에 맞는 외곽진입 수 있습니다. 이를 염두에 두고, 한 때 사용할 수 있는 너희에게베풀어진 let& # 39 의 연결 풀링을 및 응벌을 명령문입니다.
예를 들어, 연결 풀링을 접속에만 값이 비싼 때 유용합니다.
사용 가능한 이유는 응벌을 명령문입니다 *
단지 그 아래로 줄여 성능 향상을 위해 재사용 가능한 쿼리합니다 응벌을 명령문입니다 구문 분석 하게하면서요.
정답은 어플리케이션 요구 사항에 따라 다릅니다. # 39, m 은 SQLite 경우 연결 풀링을 I& 개인적으로 좋은 선택이 반드시 확실하지 않다. 만약 단일 스레드 응용 프로그램에서 사용할 수도 있지만, 단일 연결 될 수 있는 최고의 영구적입니다 SQLite 데이터베이스 (db) 를 사용할 수 있는 것보다 훨씬 빨리 풀 구성 및 아니하였으매 응벌을 명령문입니다 너무. 이 SQL 서버에 있는 것은 매우 합리적인 기본 연결 풀링을 다르다.
만약 낮은 성능 문제 여부를 확인하기 위해 응용 프로그램을 프로파일할 말해둘꼐요 합니다 SQLite 연결 풀링을 책정안 단축시킵니다 유용합니다.
대부분 '현재' 시스템.다타지스크 라이트 제공업체입니다 [출처] [1] 답변 관련이 있습니다.
>. 만약 제가 열고 닫는 내 연결 (nsr/res 짓궂군요 수도, 그렇지 않을 수도 있다. >. 그럼 얼마나 단힌 인해 접속 중인 스레드 풀) >. 내가 사용하여 성능을 발휘할 수 있는 준비한 성명에서?
대개의 경우 연결 풀로 치료해야 할 밖으로 나오지 않는 것이 좋습니다 새, 즉 모든 응벌을 제표를 이전에 혜택을 얻을 수 있을 것으로 기대하고 있다. 성명은 적립율은 " re-prepared"; 모두 유지할 경우 명령 및 연결.
>. 그러나 내가 꼭 이래야겠어요 혜택을 볼 절약합니다 don& # 39 한 안 믿는다. >. 객체의 트랜잭션까지 연결이 닫으십시오 때문에 내가 한 번 >. 이제 시작한 첫 생성된 준비한 성명에서 객체인지 >. 손실됩니다. 이것이 진정한 기술서임을?
이것이 진정한 발표했다.
>. 만약 내가 스크리테코먼드 만들 수 있는 쿼리하지 나타내는 내아기마저도 >. 자주 실행하는 것을 막을 수 있는 메모리를 스크리테코먼드 필요합니까? >. 유지하기 위해 준비한 성명에서 활성화됨?
Yes, you need to keep it. '스크리테코먼드 응벌을 대한 참조입니다' 는 성명을 발표했다.
>. 만약 내가 기술서임을 이것은 SQLite 와 동일한 스크리테코먼드 새로 만듭니다. >. 새로운 스크리테코먼드 있음을 이전 및 동일합니다. >. 이렇게 준비한 성명에서 는 사용할 수 있는?
>. 만약 내가 계속 스크리테코먼드 it& # 39 의 메모리 및 변경, s 매개 변수 및 >. as I 열고 닫을 연결, 서로 다른 연결 >. 내가 살아 준비한 성명에서 트랜잭션입니다 본질적으로 유지 >. 간의 서로 다른 접속에만?
'& # 39 의 경우' 스크리테코먼드 변경하십시오 연결, 기술서임을 적립율은 re-prepared" ";).
[1]: 트렁크 ci = http://system.data.sqlite.org/index.html/dir?
다음은 이에 앞서 helper class I found 도움이 될 수 있습니다.
[SQLiteBulkInsertHelper.cs] (https://docs.google.com/file/d/0B5-wcgU-Ku-eMDNlY1R3SzByV00/edit? pli = 1)
이렇게 사용할 수 있습니다.
SQLiteBulkInsertHelper ContactBlk = new SQLiteBulkInsertHelper("<SQLiteConnection>","<Table Name>");
ContactBlk.AllowBulkInsert = true;
ContactBlk.AddParameter("<Column Name>", /*Column Data Type*/System.Data.DbType.Int64);
ContactBlk.AddParameter("<Column Name>", /*Column Data Type*/System.Data.DbType.String);
ContactBlk.Insert(new object[] {<First Column Value>,<Second Column Value>});
ContactBlk.Flush();
시도해 볼 경우 그 문제에 대한 해결책을 볼 수 있습니다.