正在开发一个mysql的数据库接口,客户端应用有可能会启动多个线程,同时访问数据库,并有可能在各个线程中定义MYSQL连接对象。
我想问的是:在这种应用需求下,是否应该创建MYSQL的连接池?如何创建?另外需要考虑互斥和同步的问题吗?

解决方案 »

  1.   

    在这种应用需求下,是否应该创建MYSQL的连接池?最好创建连接池。如何创建?
    使用一个队列来存储固定数目的连接(MYSQL*句柄),有一个initial值,
    举例来说,20个最大连接的pool, 初始值设为3, 那么最开始,这3个连接就
    给它创建好,每个连接设置一个可用标志,当可用时,直接将这个连接分配给
    调用方。否则,从池中剩余的连接里创建一个,分配给它,并修改可用标志。
    这些操作都需要同步。还有一个要注意,应该有一个线程用来确保每隔一个时间段,对每个已经初始化了的连接
    不管是否空闲,都要执行一次ping数据库的操作。
    另外需要考虑互斥和同步的问题吗?
    当然需要。