我有一个MySQL存储例程,我想在其中使用临时数据表来存储中间结果。为了避免必须创建一个“普通”表,我想使用一个在例程执行完成后消失的内存表。我是 MySQL 新手,但我想这是要走的路:
DROP TABLE IF EXISTS MyInMemoryTable;
CREATE TABLE MyInMemoryTable ( numberField int ) ENGINE = MEMORY;
...
DROP TABLE IF EXISTS MyInMemoryTable;
我的例程适用于单个用户,但我担心如果多个用户同时运行例程会发生什么?
每个执行例程的用户会话是否是MyInMemoryTable
本地的,因此可以同时存在该表的许多实例(没有冲突)?还是为所有用户MyInMemoryTable
提供一个全局表,从而冒着不同用户的数据在表中混淆的风险?或者如果另一个用户正忙于运行例程,一个用户是否会面临数据库错误的风险?
对我来说,文档令人困惑:它说MEMORY
引擎将每个表与磁盘文件相关联,而且“MEMORY
表永远不会转换为磁盘表”。
我是否误解了 MySQL 内存表?也许有更好的方法?