gpt4 book ai didi

mysql - MySql如何区分连接间临时表的不同?

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

我读了一篇文章 ( https://www.red-gate.com/simple-talk/sql/t-sql-programming/temporary-tables-in-sql-server/ ) 关于 SQL Server 如何区分两个具有相同名称但在 2 个不同连接中创建的临时表。他们通过向每个本地临时表名称添加一个数字字符串来实现这一点,并用下划线字符向左填充。

我想知道 MySQL 如何处理上述情况(在两个本地连接中对两个同名的临时表进行差异化处理)?它使用与 SQL 相同的方法吗?

最佳答案

MySQL 通过为表生成唯一的伪随机文件名在内部处理临时表。这是 MyISAM 引擎的示例:

mysql> create temporary table test.foo (i int) engine=myisam;
mysql> exit

现在让我们看看在 MySQL 的 tmpdir 中创建了什么:

$ ls /var/folders/zz/zyxvpxvq6csfxvn_n000009800002_/T/

#sql6f_200000013_2.MYD #sql6f_200000013_2.MYI

我用临时 InnoDB 表尝试了这个测试,但是该存储引擎不会创建可见文件(至少在我现在安装的版本 8.0.3 中不会)。我猜临时表是在系统表空间 ibdata1 中创建的。

MySQL 有逻辑表名 test.foo 到相应物理表名的一些内部映射。这样每个 session 都可以有自己不同的表,即使其他 session 有同名表也是如此。

关于mysql - MySql如何区分连接间临时表的不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47002067/

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