我正在建立一个网上商店&尝试通过最小化MYSQL查询来提高性能。
通过txt文件缓存mysql查询然后获取而不是查询是不错的做法?这就是我正在做的事情
这比每次执行sql查询更有效吗?我缺少任何安全问题?
答案 0 :(得分:8)
如果你做了一个基准测试,那么创建一个独特的哈希并执行IO到磁盘的成本将大于从MySQL服务器中取出的成本。
恕我直言,不要打扰到这个程度。好的想法,但MySQL已经有内部缓存和性能调整。专注于构建应用程序,因为“过早优化是万恶之源”。
答案 1 :(得分:5)
如果你刚刚启动应用程序,memcache比使用文本文件更快捷。
文本文件可以完成这项工作,你所概述的步骤很有意义,但是memcache会更快,并为你处理繁重的工作。
答案 2 :(得分:2)
您的方法看起来有点像将问题从一个角落转移到另一个角落。
引入缓存并不能提高Mysql的性能。更好地查看哪些查询实际上很慢,然后优化查询。
答案 3 :(得分:2)
如果您希望实现缓存并着眼于未来的可伸缩性,我建议您设置运行数据库查询的RESTful服务,然后使用Web服务器的HTTP缓存功能来缓存结果。步骤如下:
您可以阅读有关使用Apache here缓存PHP的更多信息。您现在所做的就是接近这一点,但您的应用程序将能够通过基于服务的方法更好地扩展。
答案 4 :(得分:1)
我只想权衡我的两分钱,什么序列号和thephpdeveloper说共享内存/内存比你提出的任何磁盘IO绑定操作快得多的事实。 尽可能多地向mysql投入ram,除非你真的需要升级到集群,否则你不需要处理缓存管理,这需要其他考虑因素。 Memcache使您可以更好地控制缓存管理,因此您需要进行更多编码。
我首先构建应用程序然后对其进行压力测试并优化查询,和/或根据需要添加缓存管理。
答案 5 :(得分:1)
有两件事情,benchmarking和profiling。关于你可以有意义地比较atything的唯一方法是使用这些diciplines的2个指标,使用你当前使用的mysql配置,php.ini,httpd.conf,.htaccess,mod重写的东西和许多其他的东西将是基准测试和分析代理技术完成任务。
答案 6 :(得分:1)
这是荒谬的,你应该缓存结果。
查询汇编时间应该可以忽略不计。 (如果不是,你不使用SQL,因为它应该,而是生成愚蠢的select
的 stream ,其中有一个聪明的{{ 1}}会解决的)
从磁盘加载查询显然容易减慢速度 (操作系统可能会缓存磁盘IO,但很难发现)
无论如何真正需要时间,从数据库中获取结果,然后通过模板将它们设置回网页。在您的位置,我会将给定查询的 样式结果 缓存到磁盘,当被询问时,如果缓存不是很老,我会直接join
它们。
答案 7 :(得分:0)
您是否配置了MySQL的query cache?