mariadb 如何并行写入MySQL数据库?(同一表,不同记录)

iq3niunx  于 10个月前  发布在  Mysql
关注(0)|答案(1)|浏览(87)

我在运行同时写入数据库的多个进程时遇到了问题(同一个表但不同的记录)。我可以运行一个进程并让我的程序写入数据库,但是当我尝试运行多个进程时,我无法从其他进程连接到数据库。特别是,我得到:

OSError: [Errno 113] No route to host

字符串
我猜这与数据库锁有关,但我没有足够的经验来确定这一点。
以下是我如何启动mysql服务器:

mysqld_safe --socket=mysql.sock --log-error=mysql.log --datadir=mysql_data --pid-file=mariadb.pid --transaction-isolation=READ-COMMITTED &


我最初没有--transaction-isolation=READ-COMMITTED,但我添加了它,因为我认为它可能会有帮助,但它没有。
我想知道我是否能得到一些指导,如何使这个工作。
编辑:我的应用程序基本上是一个Python脚本,使用Optuna,一个机器学习超参数优化框架。相关代码为:

storage_name = "mysql+pymysql://mdanb:password@localhost:3306/optuna_db"

study = optuna.create_study(direction="maximize",
                            storage=storage_name,
                            study_name=study_name,
                            load_if_exists=True,
sampler=optuna.samplers.TPESampler(seed=seed))


我基本上是从不同的节点多次运行脚本,并在运行脚本的任何示例之前运行mysqld_safe --socket=mysql.sock --log-error=mysql.log --datadir=mysql_data --pid-file=mariadb.pid --transaction-isolation=READ-COMMITTED &一次。第一个示例总是有效的,但之后的任何示例都不起作用。

kwvwclae

kwvwclae1#

如果我对您的问题理解正确的话,一个可能的解决方案是使用连接池来管理数据库连接。这将使多个进程能够共享到数据库的连接池,而不是每个进程都尝试独立连接。

相关问题