1) SQLite 테이블을 메모리기반으로 SQL을 실행할경우
void LoadDatabaseIntoMemory(string filePath, SQLiteConnection memoryConn) { using (var fileConn = new SQLiteConnection($"Data Source={filePath};Version=3;")) { fileConn.Open(); fileConn.BackupDatabase(memoryConn, "main", "main", -1, null, 0); } } |
workingDirectory = Directory.GetCurrentDirectory(); DESCENDING_DB = Path.Combine(workingDirectory, @"descending_in_base_all.db"); ANESTATE_DB = Path.Combine(workingDirectory, @"database_all_total.db"); ESTATENAVER_DB = Path.Combine(workingDirectory, @"naver_attach_estate_info_file.db"); // 메모리 기반 SQLite 연결 생성 memoryConn1 = new SQLiteConnection("Data Source=:memory:;Version=3;"); memoryConn2 = new SQLiteConnection("Data Source=:memory:;Version=3;"); memoryConn3 = new SQLiteConnection("Data Source=:memory:;Version=3;"); memoryConn1.Open(); memoryConn2.Open(); memoryConn3.Open(); try { // 파일 DB 데이터를 메모리 DB로 복사 LoadDatabaseIntoMemory(DESCENDING_DB, memoryConn1); LoadDatabaseIntoMemory(ANESTATE_DB, memoryConn2); LoadDatabaseIntoMemory(ESTATENAVER_DB, memoryConn3); // 메모리 DB로 사용 APMSQLite.GetInstance.FetchDescendingConn = memoryConn1; APMSQLite.GetInstance.FetchEstateConn = memoryConn2; APMSQLite.GetInstance.FetchNaverAttachConn = memoryConn3; // 메모리 DB에 테이블이 정상적으로 로드되었는지 확인 Console.WriteLine("\n===== Memory DB Loaded Tables ====="); PrintTables(memoryConn1, "Descending DB"); PrintTables(memoryConn2, "Estate DB"); PrintTables(memoryConn3, "Naver Attach DB"); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } |
수행시간)
시작: 2025-02-27 10:03:55.089 종료: 2025-02-27 10:04:02.441
|
2) SQLite 테이블을 파일기반으로 SQL을 실행할경우
string workingDirectory = Directory.GetCurrentDirectory(); string DESCENDING_DB = Path.Combine(workingDirectory, @"descending_in_base_all.db"); string ANESTATE_DB = Path.Combine(workingDirectory, @"database_all_total.db"); string ESTATENAVER_DB = Path.Combine(workingDirectory, @"naver_attach_estate_info_file.db"); APMSQLite.GetInstance.FetchDescendingConn = new SQLiteConnection($"Data Source={DESCENDING_DB};Version=3;"); APMSQLite.GetInstance.FetchDescendingConn.Open(); APMSQLite.GetInstance.FetchEstateConn = new SQLiteConnection($"Data Source={ANESTATE_DB};Version=3;"); APMSQLite.GetInstance.FetchEstateConn.Open(); APMSQLite.GetInstance.FetchNaverAttachConn = new SQLiteConnection($"Data Source={ESTATENAVER_DB};Version=3;"); APMSQLite.GetInstance.FetchNaverAttachConn.Open(); |
수행시간
시작: 2025-02-27 10:04:54.994 종료: 2025-02-27 10:05:28.504
|
결론)
테이블의 데이타를 메모리에 올려서 실행하는것이 파일기반으로 실행하는것보다 5배정도 빠르다.
테이블의 데이타를 메모리에 올려서 실행하는것이 파일기반으로 실행하는것보다 5배정도 빠르다.
'java 언어 > Node.Server' 카테고리의 다른 글
Ratio of Actual Transaction Price to Asking Price for Apartment Sales by Region(2019~2024) (0) | 2025.03.07 |
---|---|
부동산.크롤링.국토교통부.실거래가.통계.조회조건추가(금액대별) (0) | 2025.03.05 |
국토교통부 실거래가 매매가격 통계조회(조건추가) (0) | 2025.02.20 |
카카오 API를 이용해서 지번을 추가입력(지역별 랭킹 매매금액차이) (0) | 2025.02.18 |
국토교통부 실거래가 JOIN With 지번(feat. Naver 아파트 기본 정보 크롤링) (0) | 2025.02.13 |