0
我是Postgresql的新手。我正在使用Postgresql和實體framework6,使用npgsql。Postgresql npgsql首次連接時間過長
我已經擁有一個數據庫。我正在使用「Code First表單數據庫」選項。
問題是,第一次執行查詢時,執行它需要我很多時間。我認爲這是第一次打開連接的時候。
我創建了這個問題這個簡單的例子(TestJSONB是的DbContext):
class Program
{
static void Main(string[] args)
{
TestQuery();
TestQuery();
}
private static void TestQuery()
{
using (DALJSONB.TestJSONB dataModel = new DALJSONB.TestJSONB())
{
var query1 =
dataModel.Database.SqlQuery<int>(
@"
SELECT 1;
");
query1.ToList();
var query2 =
dataModel.Database.SqlQuery<int>(
@"
SELECT 1;
");
query2.ToList();
}
}
}
TestQuery()的第一個執行時間是這樣的:
- query1.ToList() - 2348ms
- query2.ToList() - TestQuer 2ms的
第二執行次Y()是這樣的:
- query1.ToList() - 19ms
- query2.ToList() - 2ms的
我的app.config是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<connectionStrings>
<add name="TestJSONB" connectionString="Host=x.x.x.x;Username=x;Password=x;Persist Security Info=True;Database=TestJSONB" providerName="Npgsql" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
</providers>
</entityFramework>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Npgsql" publicKeyToken="5d8b90d52f46fda7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.2.1.0" newVersion="3.2.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
是有可能減少這個時間?
在此先感謝。
我有一臺虛擬機上的postgresql,託管在我的電腦中。我做了你告訴我的,發現了兩種不同的情況。首先,在我的電腦上。當我執行Npgsql.NpgsqlConnection連接=新Npgsql.NpgsqlConnection(「...」)它需要我2秒。其他人很快。第二種方案是在虛擬機中執行它。 Npgsql.NpgsqlConnection連接=新的Npgsql.NpgsqlConnection(「...」)很快,第一個查詢需要1.7秒,另一個查詢很快。有什麼想法? –
想接受這個答案。認爲它確實與實體框架有關。謝謝 –
另外一個補充;自從編寫這個答案以來,我收到了Npgsql 3.2.0(3.1.x沒有引起這個)的新啓動時間異常緩慢的報告。顯然,Npgsql 3.2.0的性能計數器的新用法會導致此問題,並且將在3.2.2中解決(請參閱https://github.com/npgsql/npgsql/issues/1435)。 –