【九月打卡】第7天 C气象数据中心 13-8 数据库连接池的实现
- 课程信息
课程名称:C/C++气象数据中心实战,手把手教你做工业级项目
课程章节:13-8 数据库连接池的实现
主讲老师: 吴从周
- 课程内容
每连接每线程存在缺陷
使用数据库连接池的方法进行优化
- 课程收获
1.由于线程创建的时间和资源不算过大,相反是数据库的连接会制约程序的运行,在主进程中提前创建好n个数据库连接,每个线程需要用到数据库的时候,从数据库连接池中取一个空闲的连接,用完之后归还。
2.需要加锁保护,类似于公共厕所的使用,数据库连接池中有多少个数据库连接,就需要有多少把锁进行加锁。只能用互斥锁,自旋锁不合适。
3.数据库连接池的实现:先初始化数据库连接池,即将所有的connection连接上数据库,此时需要初始化互斥锁;再从数据库连接池中索取一个空闲的连接,即没有锁的连接,获取这个连接的地址,接下来释放/归还数据库连接,最后可以选择释放数据库连接占用的资源,即断开连接。
4.从数据库连接池中索取一个空闲的连接中,选择通过加锁去发现空闲连接,轮询加锁失败之后,等待很短时间,继续进行轮询加锁操作,直到加锁成功。