我有一个MySQL存储例程,我想使用临时数据表来存储中间结果。为了避免创建一个“普通”表,我想要使用一个内存表,当例程执行完成时它会消失。我是一个MySQL的新手,但我想这是要走的路:MySQL内存表是全局的吗?
DROP TABLE IF EXISTS MyInMemoryTable;
CREATE TABLE MyInMemoryTable (numberField int) ENGINE = MEMORY;
...
DROP TABLE IF EXISTS MyInMemoryTable;
我为单个用户日常工作,但我担心如果多个用户运行在常规会发生什么同时?
是MyInMemoryTable
本地到每个执行例程的用户会话,所以这个表可以有很多实例(没有冲突)在同一时间吗? 或者是MyInMemoryTable
单一全球表为所有用户,从而冒着不同的用户的数据混在桌面?或者如果另一个用户忙于运行例程,一个用户会冒数据库错误的风险吗?
对我来说,documentation是混乱的:它说MEMORY
引擎将每个表磁盘文件,而且还“MEMORY
表都不会转换到磁盘表。”
我误解了MySQL内存表吗?也许有更好的方法?
哦,这就是我所怀疑的。我弄错了。感谢您的帮助! – Gruber