高并发下数据库连接使用方案:
1.使用已有数据库连接池(下文有介绍)
2.每个执行单元建立一次连接独享;(效率超低,难以维护,不建议使用)
3.手动维护线程池(本人在MAC测试目前效率最高);

实测代码案例:
import timeimport pymysqlfrom dbutils import persistent_db, pooled_db, simple_pooled_db, steady_dbfrom multiprocessing.pool import ThreadPoolfrom abc import abstractmethod,ABCMetafrom queue import Queue# print(help(pooled_db.PooledDB))# pooled_db 线程安全# print(pymysql.threadsafety)db_conf = {"host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456", "database": "userinfo" }class TaskConsumer(metaclass=ABCMeta): @abstractmethod def _task_worker(self, i): pass def consumer(self): task_pool = ThreadPool(self.task_pool_num) start_time = time.time() for i in range(self.task_num): task_pool.apply_async(func=self._task_worker, args=(i,)) task_pool.close() task_pool.join() return time.time() - start_time def db_read(self, cur, sql, i): # time.sleep(2) cur.execute(sql) print(i, cur.fetchall())class DbPoolTest(TaskConsumer): def __init__(self, task_num, task_pool_num, max_conn, blocking=True, **db_conf):

本文介绍了在高并发环境下,针对MySQL数据库连接的解决方案,包括使用DBUtils库中的SteadyDB、SimplePooledDB、PersistentDB和PooledDB四个模块。SteadyDB提供强硬的数据库连接,PersistentDB实现线程特定的连接重用,SimplePooledDB为简单连接池,而PooledDB则提供了线程安全的连接池,支持连接共享。通过这些连接池策略,可以提高数据库访问性能并保证线程安全。
最低0.47元/天 解锁文章
1038

被折叠的 条评论
为什么被折叠?



