我用socket+mysql进行网络编程.
用UDP。
现在有2个问题请教
1.我应该先连接mysql.然后收到一个用户消息后就开启一个线程,根据消息的内容可能会执行插入或查询或更新或删除其中一种操作.
我是所有线程都是用先前的连接 还是在每个线程中单独创建连接进行操作?
2.都说Mysql是多线程的.我想知道如果我使用1个连接进行所有操作需要同步吗,如果需要那么是否以上操作都需要同步?同理如果使用每个线程都单独创建1个连接的方式需要同步吗,如果需要那么是否以上操作都需要同步?
如果使用每个线程都单独创建1个连接的方式 Mysql会不会因为连接多了 而拒绝连接?

解决方案 »

  1.   

    mysql 有个max connection 参数限制链接
      

  2.   

    MySQL 的连接概念非常简单, 一个连接对应一个TCP/IP连接。
      

  3.   

    那么请问 如果 我已经连接了一个Mysql 比如MySql A了.
    现在我在线程里面创建一个MySql B,然后B=A。 在用B来执行命令...
    这算是 新开一个连接吗 
      

  4.   

    诸如 MySql A;mysql_init(&A);A也通过用户名,密码,连接上了数据库.
    以后 我再建MySql B; 执行B=A; 然后就可以直接 调用命令不需要再对用用户名和密码连接数据库,可以直接调用mysql_query之类的函数执行命令了.这算是新增了1连接吗
      

  5.   

    不算。用的还是同一个。其实,你到mysql中看一下 show processlist; 就知道当前有多少个连接了。
      

  6.   

    原来如此 谢谢,我对数据库不了解呵呵..
    我还想问下...
    有很多用户发消息过来...
    我在收到消息后就创建1个线程去处理...
    就用1个连接好还是在每个线程中都单独创建一个连接好?
    我想如果用1个连接的话应该就不需要同步了吧...比如一个线程使用1个连接进行查询操作即使这个操作会执行好几秒,但是也不会被另一个使用本连接进行插入操作打断从而影响结果吧.(我想在查询完成前,插入应该是不会执行的吧).那么我就不需要同步线程对吗?
    如果使用多个连接,每个线程都进行各种操作(查询,删除,更新之类...)还 需要同步吗?因为我查了下都说MySql是多线程的....那么我想它会不会自己内部进行一种调度,程序这边还需要同步吗?