想象一下,我们有一个网站,它通过 Hibernate 将写入和读取请求发送到某个数据库。我使用Java,但这个问题并不重要。
通常我们想从数据库中读取新数据。但是我想在写入的数据变得对读取可见之间引入一些延迟,以提高性能。即我不需要立即“发布”插入数据库的行。延迟一段时间后,我可以“发布”新数据。
我怎样才能实现它?
据我了解,这可以在我系统的几个不同层上进行设置。
我可以在前端缓存一些请求。可能我应该为此设置代理服务器。但这只有在查询的所有参数都匹配时才有效。
我可以在 Hibernate 中缓存读取请求。好的,但是我可以指定或估计读取查询在发生一些新插入后返回陈旧数据的平均时间吗?换句话说,我如何控制用户可以看到新数据之间的延迟时间?或者可能我应该使用类似 memcached 系统而不是 Hibernate 缓存?
可能我可以在数据库中设置一些东西。我不知道我应该如何处理 DB。可能我可以降低隔离级别以提高数据库的性能。
那么,哪种方式最好呢?
当然,主要问题是:我在这里介绍的放宽要求真的有助于提高我的系统性能吗?