我有TcpListener类,我正在使用async / await阅读和写作.

对于这个服务器,我创建了单个数据库实例,我准备了所有的数据库查询.

但是对于更多的TcpClient,我会不断得到异常:

An exception of type MySql.Data.MySqlClient.MysqLException occurred

in MysqL.Data.dll but was not handled in user code

Additional information: There is already an open DataReader associated

with this Connection which must be closed first.

如果我理解正确,则不能再有一个数据库查询在时间上是多个异步客户端的问题.

所以我只是在这样的查询中添加了锁,一切似乎都很好.

// One MysqLConnection instance for whole program.

lock (thisLock)

{

var cmd = connection.CreateCommand();

cmd.CommandText = "SELECT Count(*) FROM logins WHERE username = @user AND password = @pass";

cmd.Parameters.AddWithValue("@user",username);

cmd.Parameters.AddWithValue("@pass",password);

var count = int.Parse(cmd.ExecuteScalar().ToString());

return count > 0;

}

我也尝试使用这种方法,它为每个查询创建新的连接,如从SO社区的人那里提到的,但是这种方法比锁更慢:

using (MysqLConnection connection = new MysqLConnection(connectionString))

{

connection.Open(); // This takes +- 35ms and makes worse performance than locks

using (MysqLCommand cmd = connection.CreateCommand())

{

cmd.CommandText = "SELECT Count(*) FROM logins WHERE username = @user AND password = @pass";

cmd.Parameters.AddWithValue("@user",username);

cmd.Parameters.AddWithValue("@pass",password);

int count = int.Parse(cmd.ExecuteScalar().ToString());

return count > 0;

}

}

我使用秒表来测试这种方法和查询,一个连接与锁是在 – 20ms执行,这是 – 只有网络的延迟,但使用它是 – 55ms,因为.Open()方法 – 35ms.

为什么很多人使用使用方法,如果性能更差?还是我做错了?

c mysql 异步查询_C#Mysql – 使用锁在数据库上查询异步等待服务器相关推荐

  1. mysql 随机记录 newid(),order by newid() 各种数据库随机查询的方法

    这篇文章主要为大家详细介绍了order by newid() 各种数据库随机查询的方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! SQL S ...

  2. c# mysql 汉字乱码_c#+mysql 中文乱码

    一.错误读出 现象:一个已经存在数据的MySQL数据库,该数据库的数据用系统中其它软件.网页查看均正常,使用MySQLcc之类的客户端查看也正常,可是在新写的网页中总是显示乱码. 分析:其它系统都可以 ...

  3. mysql 分页查询web_JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)...

    JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)-1.jpg (40.23 KB, 下载次数: 0) 2018-8-18 13:34 上传 在开发过程中,经常做的一件事,也是最基本的事 ...

  4. mysql联合查询数量不一致_Mybatis关联查询,查询出的记录数量与数据库直接查询不一致,如何解决?...

    SELECT  p.name, u.u_name,u.company,u.proComany,u.mobile,u.email, r.money FROM iw_user u LEFT JOIN ra ...

  5. mysql查询高于部门平均工资_Oracle数据库中 查询高于自己部门平均工资的员工信息 用相关子查询怎么做啊?...

    展开全部 每个部门俯场碘渡鄢盗碉醛冬互大于所有人平均636f707962616964757a686964616f31333365633838工资的员工: Select BM,YG From TB WH ...

  6. mysql查询高于部门平均工资_Oracle数据库中 查询高于自己部门平均工资的员工信息 用相关子查询怎么做啊?...

    每个部门俯场碘渡鄢盗碉醛冬互大于所有人平均工资的员工: Select BM,YG From TB WHERE Salary>(Select Avg(Salary) From TB) 每个部门大于 ...

  7. mysql查询雇员地址和电话_数据库的查询(结合YGGL.sql)

    (如有错误,欢迎指正!) 1.select语句查询 (1)查询employees表员工部门号和性别,要求消除重复行. mysql>select distinct 员工部门号,性别from emp ...

  8. mysql使用数据库预处理_php中对MYSQL操作之预处理技术(2)数据库dql查询语句

    //预处理技术 //创建一个mysqli对象 $mysqli = new MySQLi("主机名","mysql用户名","密码",&quo ...

  9. c#.net配置mysql数据库连接池_C#MySQL连接池

    我正在使用C#多线程应用程序并使用 MySQL与整个应用程序的单一连接.但是当两个或多个线程同时尝试访问数据库时,我得到以下错误: There is already an open DataReade ...

最新文章

  1. 运维企业专题(6)LVS高可用与负载均衡中篇——VS/TUN模式配置详解
  2. 【坑爹微信】微信支付相关问题解决
  3. 神策数据荣获“2017金融科技·大数据优秀案例之最佳实践案例奖”
  4. SQLite相关知识
  5. 初学Java该学哪些知识?这6大知识必学
  6. VueCli3 项目结构和具体作用
  7. 辽宁计算机专业院校排名2015,liaoning高校排行榜_辽宁高校排名 2015年辽宁省最佳大学排行榜...
  8. 数组深拷贝_JavaScript之深浅拷贝
  9. APP启动页HTML,启动页.html
  10. 梳理项目的pom文件
  11. ABP理论学习之Abp Session
  12. 舍不得花钱买1stOpt,不妨试试这款免费的拟合优化神器【openLU】
  13. QQ坦白说异常火爆!小伙平凡遭到妹子表白,编程技术是时候登场了
  14. 无线路由器介绍和有线路由器上网
  15. js输出sb (!(~+[]) + {})[--[~+][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] * ~+[]] 图解
  16. 网页瘦身方法-金瑞帆高端建站
  17. 初二因式分解奥数竞赛题_初中数学因式分解(含答案)竞赛题精选.doc
  18. Visual Studio运行C语言程序(第一个程序)
  19. 关于【统一权限系统】概况
  20. 《数据结构》C语言版 链表的基本操作实现

热门文章

  1. 深入解读 MySQL 底层原理,让性能“飞起来”的方法总结
  2. 目标跟踪【更新中...】
  3. MATLAB2017深度学习工具箱总结
  4. 火热的数据中台对企业的价值是什么?
  5. Hadoop--ip和主机名配置
  6. [转载]敏捷开发之Scrum扫盲篇
  7. cisco初级随堂笔记2
  8. Android开发:调用camera API 创建MediaRecorder
  9. eclipse打开当前文件夹
  10. 毕业准备:外企面试--基本涵盖了所有问题【附带有答案版本】