[问题] C#与MySql的问题

楼主: StupidGaGa (笨嘎嘎)   2014-12-25 12:29:13
有些问题鲁蛇的我不太清楚,想请问乡民。
1. 连线ID与指令ID?
数据库连线的时候有个连线的 thread ID,
取得的时候用 MySqlConnection.ServerThread,
这在数据库是可以观察到的。
但是公司的前辈说,
PHP内除了有连线ID可以查到之外,还有个指令的ID可以查,
是叫做Resource ID,具公司前辈说明此ID是数据库给的。
例如我同一条连线做三次查询,会像下面这样,
Thread ID : 11325, Rexource ID: 475
Thread ID : 11325, Rexource ID: 476
Thread ID : 11325, Rexource ID: 477
想请问C#如何可以查到指令的ID?
2. 多执行绪中的数据库连线该如何设计?
我知道这问题很菜,但是google我查不太到,
不知道是太菜的问题还是我关键字找错。
我到现在有三种设计,不过我觉得都有些问题
(1) 一个执行绪内有一条连线,open->指令->close、open->指令->close
(2) 一个执行绪内有一条练限,open->指令->指令->close
(3) 多个执行绪共用一条连线、用Lock,应用程式开始时open,应用程式结束close
想请各位乡民指点我一下,
又或者有可参考的书籍。
先谢谢各位有回答的乡民
作者: Peruheru (还在想)   2014-12-25 13:34:00
连线无所谓吧,是写入才比较有lock的问题多开几条连线应该不会怎样...吧这样阿,好吧XD
作者: GoalBased (Artificail Intelligence)   2014-12-25 15:31:00
连线当然不能过多啊 不然跟被攻击有什么差别
作者: Peruheru (还在想)   2014-12-25 15:32:00
那不然这样,就是独立sql查询的部分为一个执行绪所有人的查询动作都丢到一个池内,然后sql执行绪去执行这样永远都是同一个执行绪在使用同一条连线,没有冲突只是变成原本sql查询的部分变成要等待执行绪执行到他们的查询结果才行,每个人就领个号码牌等叫号就是把SQL查询的部分独立为一个代理的意思可能长时间未侦测到查询,就关闭连线,要用再开甚至可以做出优先权高的查询优先执行这种事不知道这样行不行?不然就像窗口一样多开几个窗口嘛一个服务员处理不来,就多两个服务员,时间就剩三分之一
作者: Litfal (Litfal)   2014-12-25 18:07:00
这得看你的多执行续是做啥、怎样设计的。一般来说我会用(1)+Connection Pool

Links booklink

Contact Us: admin [ a t ] ucptt.com