SQLite 연결로 데이터베이스 연결 시간 초과가 발생한다고 생각하지만 연결 시간 제한을 늘리는 방법을 모르겠습니다. 명령 제한 시간은 ConnectionString.DefaultTimeout으로 설정할 수 있지만 Connection.ConnectionTimout은 읽기 전용입니다. 어떤 제안?System.Data.SQLite에서 ConnectionTimeout을 설정하십시오.
덕분에, 브라이언
SQLite 연결로 데이터베이스 연결 시간 초과가 발생한다고 생각하지만 연결 시간 제한을 늘리는 방법을 모르겠습니다. 명령 제한 시간은 ConnectionString.DefaultTimeout으로 설정할 수 있지만 Connection.ConnectionTimout은 읽기 전용입니다. 어떤 제안?System.Data.SQLite에서 ConnectionTimeout을 설정하십시오.
덕분에, 브라이언
는 연결 문자열에 설정됩니다 SqlConnection
SQLite는 쿼리에 대한 기본 (30초) 제한 시간을 초과하는 무언가가 당신의 접근 방식에 잘못되었다는 강한 표시입니다.
시간 초과는 일반적으로 동시 연결 수가 너무 많을 때 발생합니다. 인터리브 된 쓰기/읽기 트랜잭션이있을 때 SQLite는 제대로 작동하지 않습니다.
단일 트랜잭션에서 관련 SQL 문을 청크했는지 확인하십시오 (성능 향상은 x1000 일 수 있습니다!).
다른 팁 : 기본적으로 트랜잭션 (BeginTransaction)을 시작할 때 기본 동작은 쓰기 잠금을 즉시 얻는 것입니다. 대신 BeginTransaction (deffered) 버전을 사용하고 실제로 필요할 때까지 쓰기 잠금 획득을 연기하도록 지정하십시오. 여러 독자가있을 경우 도움이 될 것입니다. 이제는 독자가 동시에 실행할 수 있기 때문입니다.
감사합니다. –
이것은 누군가가 줄 수있는 최선의 조언입니다. 종종 답이 하드웨어에 더 많은 하드웨어를 던지는 것이 아니라 (연결 시간 제한 변경) 오히려 성능 문제의 근본 원인 인 쿼리를 찾는 경우가 있습니다. 그리고 그것은 힘들 수 있습니다. 많은 데이터베이스에서 성능 프로파일 링을 수행했는데 일부 성능 문제가 발생하기까지 수 주일이 걸릴 수 있지만 하드웨어를 더 많이 던지면 오랜 답이 아닙니다. –