Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET、MySQL和SQL Server中的数据库连接_.net_Asp.net_Mysql_Sql Server_Connection Pooling - Fatal编程技术网

ASP.NET、MySQL和SQL Server中的数据库连接

ASP.NET、MySQL和SQL Server中的数据库连接,.net,asp.net,mysql,sql-server,connection-pooling,.net,Asp.net,Mysql,Sql Server,Connection Pooling,我正在一个ASP.NET项目中使用MySQL,我做了一些测试来测试MySQL.NET提供程序的性能,但不幸的是,我对结果不是很满意 在SQL Server中,一个只打开连接的非常简单的循环速度提高了10倍: // MySQL const string CONNECTION_STRING = "server=localhost;database=testdb;user id=root;password=mypassword;max pool size=250;"; for (int i = 0

我正在一个ASP.NET项目中使用MySQL,我做了一些测试来测试MySQL.NET提供程序的性能,但不幸的是,我对结果不是很满意

在SQL Server中,一个只打开连接的非常简单的循环速度提高了10倍:

// MySQL

const string CONNECTION_STRING = 
"server=localhost;database=testdb;user id=root;password=mypassword;max pool size=250;";
for (int i = 0; i < 5000; i++)
{
  using (MySqlConnection con = new MySqlConnection(CONNECTION_STRING))
  {
    con.Open();
  }
}

// SQL Server

const string CONNECTION_STRING = "Data Source=localhost;Initial Catalog=testdb;Integrated Security=True;max pool size=250;";
for (int i = 0; i < 5000; i++)
{
  using (SqlConnection con = new SqlConnection(CONNECTION_STRING))
  {
    con.Open();
  }
}

感谢您的建议…

SQL server默认使用连接池:使用完全相同的连接字符串打开的每个连接在关闭时都会返回到连接池。从池中返回连接比从头创建连接要高效得多。我假设MySQL在默认情况下不提供连接池< /P> < P>它可能是连接池,但您还必须考虑这样一个事实:当.NET代码与SQL Server对话时,它使用最有效的可能信道进行通信,因为代码全部由微软拥有和控制。如果.NET代码正在与第三方服务器通信,或者如果某个第三方代码正在与Sql server通信,则通信必须更加基于标准和通用,因此速度要慢得多


这就是为什么在“宠物店”战争期间,ASP.NET解决方案总是比其他解决方案运行得快得多。当你被迫不依赖平台时,你可能无法跟上100%的本地代码。

要考虑的是mySQL是如何安装的,你告诉过它该服务器是专用数据库服务器还是工作站?MySQL可以配置为限制自身,这样它就不会与其他服务冲突,也可以选择任何可用的服务。SQL Server将使用它认为需要的任何资源。我将研究您的mysql服务器是如何配置的,您很有可能在那里获得一些性能改进

最后,windows并不是mysql的首选平台,它是受支持的,但如果您真的想让它在linux系统上运行,您可以调整文件系统等以获得最佳性能,这是SQL Server无法做到的

这里是一些文章、博客、书籍等的链接,用于mysql性能调优

[client]
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
skip-locking
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8

server-id   = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout