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

  1. 초 차이 계산
    • 10:04:02.441 - 10:03:55.089
    • 02.441초 - 55.089초 = 7.352초
따라서, 두 타임스탬프의 차이는 7.352초입니다.

 

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

  1. 초 차이 계산
    • 10:05:28.504 - 10:04:54.994
    • 분 차이: 10:05 - 10:04 = 1분 (60초)
    • 초 차이: 28.504초 - 54.994초 = -26.490초
    • 1분(60초)을 고려하면, 60 - 26.490 = 33.510초
따라서, 두 타임스탬프의 차이는 33.510초입니다.


결론)
테이블의 데이타를 메모리에 올려서 실행하는것이 파일기반으로 실행하는것보다 5배정도 빠르다.
테이블의 데이타를 메모리에 올려서 실행하는것이 파일기반으로 실행하는것보다 5배정도 빠르다.

 



index.html
0.03MB

+ Recent posts