java EE 用的是MySQL数据库,缓存问题

一直没考虑缓存问题,网页上展示的数据全部直接是读取数据库,这样肯定是不行

现在想的方案是吧数据库文件直接缓存为文件,然后直接读取文件

这样比读数据库感觉快了很多,我现在是用 jackson 吧数据存为 XXX.json 文件,然后用 jackson 读取 XXX.json 文件转为 JavaBean 使用,如果是 添加 更新 操作时,就更新下 XXX.json 文件,但是并发非常大时是不是不行,应该可能2个更新同时在操作这个文件?

不知道这方案对不对

一般缓存是怎么做

阅读 4.7k
2 个回答

提一句,mysql本身就是有查询缓存机制的,也就是并非你的每句sql它都会费力的去解析查询。
用文件做缓存对io的占也是比较大的,性能方面的提升不会太大(当然,如果之前数据库查询的逻辑的确是太复杂、太慢了的话,你还是有机会感到提升很多)。
你先把产品上线看看效果再决定是否真的有必要上缓存,真要上的话试试Memcached吧,自己去折腾无异于自己挖坑埋自己。

系统有文件读写锁,所以两个线程(进程)不能同时获得写锁进行写操作.
直接访问MySQL读写数据的性能也没你想象中那么差,MySQL有自己的缓存机制.
i5-3230M笔记本的CPU,在Ubuntu14.04上,5个PHP-FPM工作进程跟MySQL建立5个持久连接,ab压测每秒连接能达到5900多个,在服务器CPU上,数据库并发连接超过C10K估计也没有问题.
关键还是SQL执行快慢的问题,如果SQL查询没能利用索引导致速度慢,那这是SQL优化的问题,不是MySQL的问题.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题