.netcore的mysql链接字符串ConnectionString到底应该怎么设置

配置属性

官方文档看看

https://www.connectionstrings.com/mysql/

 

名称 默认值 说明
Application Name   应用程序的名称,如果不提供应用程序名称,默认是:“.Net SqlClient Data Provider”
AttachDBFilename
- 或 -
extended properties
- 或 -
Initial File Name
  可连接数据库的主文件的名称,包括完整的路径名。

必须使用关键字“database”来指定数据库的名称。

Connect Timeout 
- 或 -
Connection Timeout

15 在终止尝试连接并产生错误之前,等待与服务器的连接的时间长度(以秒为单位)。
Current Language   SQL Server 语言

Data Source 
- 或 -
Server
- 或 -
Address
- 或 -
Addr
- 或 -
Network Address

  要连接的 SQL Server 实例的名称或网络地址。
Encrypt 'false' 当该值为 true 时,如果服务器端安装了证书,则 SQL Server 将对所有在客户端和服务器之间传送的数据使用 SSL 加密。可识别的值为 truefalseyes 和 no

Initial Catalog
- 或 -
Database

  数据库的名称。

Integrated Security 
- 或 -
Trusted_Connection

'false' 当为 false 时,将在连接中指定用户 ID 和密码。当为 true 时,将使用当前的 Windows 帐户凭据进行身份验证。

可识别的值为 truefalseyesno 以及与 true等效的 sspi(强烈推荐)。

Network Library 
- 或 -
Net

'dbmssocn' 用于建立与 SQL Server 实例的连接的网络库。支持的值包括 dbnmpntw(命名管道)、dbmsrpcn(多协议)、dbmsadsn (Apple Talk)、dbmsgnet (VIA)、dbmslpcn(共享内存)及 dbmsspxn (IPX/SPX) 和 dbmssocn (TCP/IP)。

相应的网络 DLL 必须安装在要连接的系统上。如果不指定网络而使用一个本地服务器(比如“.”或“(local)”),则使用共享内存。

Packet Size 8192 用来与 SQL Server 的实例进行通讯的网络数据包的大小,以字节为单位。

Password 
- 或 -
Pwd

  SQL Server 帐户登录的密码(建议不要使用。为了维护最高级别的安全性,强烈建议改用 Integrated Security 或 Trusted_Connection 关键字)。
Persist Security Info 'false' 当该值设置为 false 或 no(强烈推荐)时,如果连接是打开的或者一直处于打开状态,那么安全敏感信息(如密码)将不会作为连接的一部分返回。重置连接字符串将重置包括密码在内的所有连接字符串值。可识别的值为 truefalseyes 和 no
User ID   SQL Server 登录帐户(建议不要使用。为了维护最高级别的安全性,强烈建议改用 Integrated Security 或 Trusted_Connection 关键字)。
Workstation ID 本地计算机名称 连接到 SQL Server 的工作站的名称。

下表列出了 ConnectionString 内连接池值的有效名称。有关连接池的更多信息,请参见 SQL Server .NET Framework 数据提供程序连接池。

 

名称 默认值 说明
Connection Lifetime 0 当连接被返回到池时,将其创建时间与当前时间作比较,如果时间长度(以秒为单位)超出了由 Connection Lifetime 指定的值,该连接就会被销毁。这在聚集配置中很有用(用于强制执行运行中的服务器和刚置于联机状态的服务器之间的负载平衡)。

零 (0) 值将使池连接具有最大的连接超时。

Connection Reset 'true' 确定从池中提取数据库连接时是否重置数据库连接。对于 Microsoft SQL Server 7.0 版,设置为 false 可避免获取连接时再有一次额外的服务器往返行程,但须注意此时并未重置连接状态(如数据库上下文)。
Enlist 'true' 当该值为 true 时,池程序在创建线程的当前事务上下文中自动登记连接。可识别的值为 truefalseyes 和 no
Max Pool Size 100 池中允许的最大连接数。
Min Pool Size 0 池中允许的最小连接数。
Pooling 'true' 当该值为 true 时,系统将从相应池中提取 SQLConnection 对象,或在必要时创建该对象并将其添加到相应池中。可识别的值为 truefalseyes 和 no

当设置需要布尔值的关键字或连接池值时,您可以使用 'yes' 代替 'true','no' 代替 'false'。整数值表示为字符串。

 

运行方式

 

1、当一个程序执行Connection.open()时候,ADO.net就需要判断,此连接是否支持Connection Pool (Pooling 默认为True)

 

(1)、如果指定为False, ADO.net就与数据库之间创建一个连接,然后返回给程序。

 

(2)、如果指定为 True,ADO.net就会根据ConnectString创建一个Connection Pool,然后向Connection Pool中填充Connection。填充多少个Connection由Min Pool Size (默认为0)属性来决定。例如如果指定为5,则ADO.net会一次与SQL数据库之间打开5个连接,然后将4个Connection,保存在 Connection Pool中,1个Connection返回给程序。

 

 

2、当程序执行到Connection.close() 的时候。如果Pooling 为True,ADO.net 就把当前的Connection放到Connection Pool并且保持与数据库之间的连接。

 

同时还会判断Connection Lifetime(默认为0)属性,0代表无限大,如果Connection存在的时间超过了Connection LifeTime,ADO.net就会关闭的Connection同时断开与数据库的连接,而不是重新保存到Connection Pool中。

 

 

3、当下一次Connection.Open() 执行的时候,ADO.Net就会判断新的ConnectionString与之前保存在Connection Pool中的Connection的connectionString是否一致。

 

 

4、 ADO.net需要判断当前的Connection Pool中是否有可以使用的Connection(没有被其他程序所占用),如果没有的话,ADO.net就需要判断ConnectionString设 置的Max Pool Size (默认为100)

 

(1)、如果Connection Pool中的所有Connection没有达到Max Pool Size,ADO.net则会再次连接数据库,创建一个连接,然后将Connection返回给程序。

 

(2)、如果已经达到了 MaxPoolSize,ADO.net就不会再次创建任何新的连接,而是等待Connection Pool中被其他程序所占用的Connection释放,这个等待时间受SqlConnection.ConnectionTimeout(默认是15 秒)限制,也就是说如果时间超过了15秒,SqlConnection就会抛出超时错误。

 

 

5、如果有可用的Connection,从Connection Pool 取出的Connection也不是直接就返回给程序,ADO.net还需要检查ConnectionString的ConnectionReset属性 (默认为True)是否需要对Connection 最一次reset。

总结

server=****;userid=root;password=****;database=dbname;Charset=utf8;Allow Zero Datetime=True; Pooling=true; Max Pool Size=512;sslmode=none;Allow User Variables=True;

你可能感兴趣的:(mysql,.netcore,C#,mysql)