簡體   English   中英

使用.NET刪除數據庫后,MySQL查詢變慢

[英]MySql queries slow after dropping database with .NET

我似乎對.NET中的MySql連接器有問題。

我正在數據庫接口后端進行單元測試。 測試的一部分是刪除數據庫,以便可以將整個數據庫重新初始化為默認設置。 這是我的測試通常的樣子:

Imgur Image(因為我沒有代表)

放置代碼很簡單:

        string connStr = System.Configuration.ConfigurationManager.ConnectionStrings[APPCONFIG_SCHEMA_CONNECTION_NAME].ConnectionString;

        using (MySqlConnection conn = new MySqlConnection(connStr))
        using (MySqlCommand cmd = conn.CreateCommand())
        {
            conn.Open();

            cmd.CommandText = "DROP DATABASE IF EXISTS securitydata;";

            cmd.ExecuteNonQuery();
        }

如果我使用工作台手動刪除數據庫並通過注釋掉刪除來修改測試,則測試的速度實際上比它們快50倍:

快速測試的圖像

所有這些都使用NuGet.org上可用的NuGet包中的MySql Connector / NET。 我已經在運行MySql 5.6.24的開發(本地)計算機以及最終使用MySql 5.5.41的生產計算機上對此進行了測試。

我想通了,以防有人碰上同樣的東西。 這是我進行TestInitialize的方式:

        [TestInitialize]
        public void InitializeTest(TestContext c)
        {
#if DEBUG
            SecurityDatabase.DropDatabase();
#endif
            _database = new SecurityDatabase();
        }

對我來說這是一個誤會。 對於每個測試都會運行TestInitialize ,而在建立測試類時,不會運行一次。 我忘記了ClassInitialize屬性,該屬性每個TestClass運行一次。 修改后的代碼是:

        [ClassInitialize]
        public static void InitializeClass(TestContext c)
        {
#if DEBUG
            SecurityDatabase.DropDatabase();
#endif
        }

        [TestInitialize]
        public void InitializeTest()
        {
            _database = new SecurityDatabase();
        }

現在測試正常運行,並且由於每個測試集僅刪除一次數據庫,因此在我的一些測試案例中暴露了一些問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM