java 언어/Node.Server
테이블의 데이타를 메모리에 올려서 실행하는것이 파일기반으로 실행하는것보다 5배정도 빠르다.(feat SQLite)
여린완자
2025. 2. 27. 10:12
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배정도 빠르다.