我有一個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