首先,我打算做的是使用内存来存储每个用户的最新“用户更新”记录。
我是MySQL新手。如何在内存中创建表?
在官方网站上,据说我们可以在创建表时设置ENGINE = MEMORY。但该文件声称,内存中的那些表总是为了阅读而不是为了写。
我根本不知道该怎么做。
我陷入这个问题已有几天了。我无法在服务器中安装memcache和任何PHP扩展,因为我没有使用虚拟专用服务器,我只能在httpdocs文件夹中传输脚本和文件...我也尝试使用平面文件存储数据工作作为缓冲区/缓存,但我发现由于被拒绝,我无法在服务器的文件目录中编写/创建文件,我不允许更改此权限。
使用MySQL缓冲可能是我唯一的选择。希望有人能给我一些提示。
谢谢。
P.S。我正在使用运行PHP的Linux Apache服务器,MySQL作为数据库。
答案 0 :(得分:0)
ENGINE = MEMORY
表可用于读取或写入。
唯一需要注意的是,当服务器崩溃,关闭,重新启动等时,内存表中的所有数据都会消失。(正如您对内存中的表所期望的那样。)
答案 1 :(得分:0)
你真的应该仔细阅读MySQL的MEMORY引擎。数据存储在RAM中,因此当服务器断电或重新启动时,RAM将被清除,数据将被擦除。 MEMORY表应该是MySQL中访问速度最快的表类型,但只存储临时数据,无法保证。
如果我理解正确,你试图对从PHP生成的某种数据进行静态缓存,不是吗?最简单的方法是将它们作为固定文件缓存写入www目录,HTML或JS。如果你不能将你的目录chmod为可写,那么将它们存储在MySQL中也应该没问题,但只有这样才有用。
缓存数据的想法是:减少SQL查询,减少磁盘I / O,减少代码生成。但是使用MEMORY表需要花费太多内存。将它们存储在正常的MyISAM表中也应该没问题,并且可以为您提供大量的后台工作。
但是,应该考虑两件事:1,如果访问时不存在缓存; 2,如果缓存是最新的。
给你的结果某种键是个好主意,所以PHP首先检查缓存日期,如果不存在,则生成缓存,然后显示或以其他方式直接显示缓存。