我有一个场景,我想知道减少数据库命中的最佳实践。场景是我在我的应用程序中有一个字典表,我把所有的单词/关键字用于翻译目的,因为我的系统是多语言的。 关键字被放置在整个页面上,在一个页面中可以是10到20个,如果用户没有查看英文版的网站,它就会从数据库中获取翻译。
我在使用C#和LINQ2SQL的Asp.Net MVC 2中的应用程序。
答案 0 :(得分:9)
缓存是减少数据库查询的好方法。您可以使用两种级别的缓存:
答案 1 :(得分:8)
翻译通常不会经常更改,并且数据量有限。在启动Web应用程序时读取所有翻译的字符串,并将它们放在全局可访问的词典中。无论何时需要翻译的字符串,请在字典中查找。
答案 2 :(得分:2)
linq将延迟加载,这意味着除非您访问查询返回的属性,否则查询不会访问数据库,因此请确保在真正需要之前避免访问属性。
您还可以尝试将linq查询合并为一个,并查看您的循环,以确保没有更好的方法来循环查询。
您还应该能够完全删除数据库访问,并在xml而不是数据库中使用翻译文件。
答案 3 :(得分:2)
在你可以做诸如缓存和延迟加载之类的事情之前......最好弄清楚出了什么问题。
输入LinqToSql Profiler。是的,它是一种商业产品..但它是值得的。此外,它有一个DEMO期间..
这可以显示执行查询的垃圾......以及哪些查询正在执行N + 1等等。