如果我不删除临时内存表,该表将保留多长时间(MySQL)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如果我不删除临时内存表,该表将保留多长时间(MySQL),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1368字,纯文字阅读大概需要2分钟。
内容图文
我在MySQL中使用递归存储过程来生成名为id_list的临时表,但是我必须在后续的select查询中使用该过程的结果,因此无法在该过程中删除该临时表…
BEGIN;
/* generates the temporary table of ID's */
CALL fetch_inheritance_groups('abc123',0);
/* uses the results of the SPROC in the WHERE */
SELECT a.User_ID
FROM usr_relationships r
INNER JOIN usr_accts a ON a.User_ID = r.User_ID
WHERE r.Group_ID = 'abc123' OR r.Group_ID IN (SELECT * FROM id_list)
GROUP BY r.User_ID;
COMMIT;
调用该过程时,第一个值是我想要的分支的顶级ID,第二个值是该过程在递归过程中使用的层.在递归循环之前,它检查tier = 0以及是否运行:
DROP TEMPORARY TABLE IF EXISTS id_list;
CREATE TEMPORARY TABLE IF NOT EXISTS id_list (iid CHAR(32) NOT NULL) ENGINE=memory;
所以我的问题是:如果我在过程结束时或在事务中不删除临时MEMORY表,该表将在内存中保留多长时间?会话结束后会自动删除它吗,还是只要连接打开就将它保留在内存中?
** N.B.显而易见的答案可能是在提交语句之前删除临时表,但让我暂时假设我做不到.*
有关此问题的更详细的答案,请参见:https://dba.stackexchange.com/questions/57971/how-long-will-a-temporary-memory-table-persist-if-i-dont-drop-it-mysql,所以我投票决定关闭此问题.
解决方法:
对于manual,在关闭连接时会自动删除临时表(重点是我的):
Temporary Tables
You can use the TEMPORARY keyword when creating a table. A TEMPORARY
table is visible only to the current connection, and is dropped
automatically when the connection is closed.
内容总结
以上是互联网集市为您收集整理的如果我不删除临时内存表,该表将保留多长时间(MySQL)全部内容,希望文章能够帮你解决如果我不删除临时内存表,该表将保留多长时间(MySQL)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。