gpt4 book ai didi

mysql - 保持 MySQL 连接打开以从 shell 提交多个查询

转载 作者:行者123 更新时间:2023-11-29 07:54:04 35 4
gpt4 key购买 nike

我想了解有关 MySQL 命令行工具如何工作的更多信息。

假设我希望能够编写多个 SQL 语句的脚本,并使用 shell 脚本在处​​理语句时输出语句的描述。下面是一个通用示例,其中 del_sql、ins_sql 和 qry_sql 引用同一数据集上的任何删除、插入和选择查询。

echo "Deleting data in the range."
echo $del_sql | mysql -h "$mysql_host" -u "$mysql_user" -p"$mysql_pass" -D "$mysql_db"

echo "Inserting data into the range."
echo $ins_sql | mysql -h "$mysql_host" -u "$mysql_user" -p"$mysql_pass" -D "$mysql_db"

echo "Querying data from the range."
echo $qry_sql | mysql -h "$mysql_host" -u "$mysql_user" -p"$mysql_pass" -D "$mysql_db"

我担心的是 - 这是否会打开和关闭与数据库的三个单独的连接,这是否比一次提交所有语句更昂贵?在此示例中,假设 all_sql 是一个字符串,其中包含以分号分隔的所有三个语句。

echo "Deleting, inserting, and querying data in the range."
echo $all_sql | mysql -h "$mysql_host" -u "$mysql_user" -p"$mysql_pass" -D "$mysql_db"

我尝试了以下方法,只是胡乱摆弄它,认为这是有道理的。

mysql -h "$mysql_host" -u "$mysql_user" -p"$mysql_pass" -D "$mysql_db"
echo $del_sql | mysql -e
echo $ins_sql | mysql -e
echo $qry_sql | mysql -e

但这显然是不正确的语法。

最佳答案

我不是程序员,但在数据库方面我可以告诉你,MySQL 可以非常有效地为你处理这个问题。它使用线程缓存/池。每个线程基本上都是一个连接。

您可以在这里阅读更多相关信息:How MySQL Uses Threads for Client Connections .

当您通过命令行客户端登录数据库,然后在另一个 shell 中发出脚本时,您甚至可以观察到这一点。

做一个

SHOW PROCESSLIST;

脚本运行完毕后,您将看到您的连接仍然存在,状态为SLEEPING。当您再次执行脚本时,它将被重用。

关于mysql - 保持 MySQL 连接打开以从 shell 提交多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25617222/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com