c mysql 异步查询_C#Mysql – 使用锁在数据库上查询异步等待服务器
我有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 – 使用锁在数据库上查询异步等待服务器相关推荐
- mysql 随机记录 newid(),order by newid() 各种数据库随机查询的方法
这篇文章主要为大家详细介绍了order by newid() 各种数据库随机查询的方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! SQL S ...
- c# mysql 汉字乱码_c#+mysql 中文乱码
一.错误读出 现象:一个已经存在数据的MySQL数据库,该数据库的数据用系统中其它软件.网页查看均正常,使用MySQLcc之类的客户端查看也正常,可是在新写的网页中总是显示乱码. 分析:其它系统都可以 ...
- mysql 分页查询web_JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)...
JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)-1.jpg (40.23 KB, 下载次数: 0) 2018-8-18 13:34 上传 在开发过程中,经常做的一件事,也是最基本的事 ...
- 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 ...
- mysql查询高于部门平均工资_Oracle数据库中 查询高于自己部门平均工资的员工信息 用相关子查询怎么做啊?...
展开全部 每个部门俯场碘渡鄢盗碉醛冬互大于所有人平均636f707962616964757a686964616f31333365633838工资的员工: Select BM,YG From TB WH ...
- mysql查询高于部门平均工资_Oracle数据库中 查询高于自己部门平均工资的员工信息 用相关子查询怎么做啊?...
每个部门俯场碘渡鄢盗碉醛冬互大于所有人平均工资的员工: Select BM,YG From TB WHERE Salary>(Select Avg(Salary) From TB) 每个部门大于 ...
- mysql查询雇员地址和电话_数据库的查询(结合YGGL.sql)
(如有错误,欢迎指正!) 1.select语句查询 (1)查询employees表员工部门号和性别,要求消除重复行. mysql>select distinct 员工部门号,性别from emp ...
- mysql使用数据库预处理_php中对MYSQL操作之预处理技术(2)数据库dql查询语句
//预处理技术 //创建一个mysqli对象 $mysqli = new MySQLi("主机名","mysql用户名","密码",&quo ...
- c#.net配置mysql数据库连接池_C#MySQL连接池
我正在使用C#多线程应用程序并使用 MySQL与整个应用程序的单一连接.但是当两个或多个线程同时尝试访问数据库时,我得到以下错误: There is already an open DataReade ...
最新文章
- 运维企业专题(6)LVS高可用与负载均衡中篇——VS/TUN模式配置详解
- 【坑爹微信】微信支付相关问题解决
- 神策数据荣获“2017金融科技·大数据优秀案例之最佳实践案例奖”
- SQLite相关知识
- 初学Java该学哪些知识?这6大知识必学
- VueCli3 项目结构和具体作用
- 辽宁计算机专业院校排名2015,liaoning高校排行榜_辽宁高校排名 2015年辽宁省最佳大学排行榜...
- 数组深拷贝_JavaScript之深浅拷贝
- APP启动页HTML,启动页.html
- 梳理项目的pom文件
- ABP理论学习之Abp Session
- 舍不得花钱买1stOpt,不妨试试这款免费的拟合优化神器【openLU】
- QQ坦白说异常火爆!小伙平凡遭到妹子表白,编程技术是时候登场了
- 无线路由器介绍和有线路由器上网
- js输出sb (!(~+[]) + {})[--[~+][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] * ~+[]] 图解
- 网页瘦身方法-金瑞帆高端建站
- 初二因式分解奥数竞赛题_初中数学因式分解(含答案)竞赛题精选.doc
- Visual Studio运行C语言程序(第一个程序)
- 关于【统一权限系统】概况
- 《数据结构》C语言版 链表的基本操作实现