我在我的应用中使用Firebird。有一个数据库每天接收一次负载。其余时间查询是只读的(选择查询)。
有没有办法改善表现?例如,我不需要数据库的并发控制,因为我只会进行SELECT
次查询。
由于
答案 0 :(得分:1)
由于数据库中有大量读取,因此必要时可以大量使用索引。这可以加快查询过滤和排序。
数据库引擎自动管理并发,如果只有SELECT
个查询,则不会锁定数据库对象。因此,我认为您不应该将此区域视为提高性能的方法。
答案 1 :(得分:1)
每天需要多少数据库?您可能正在阅读一小部分数据,因此您可以在应用程序层缓存数据并完全保存数据库调用。
由于数据库中的记录是只读的,因此可以使用SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED并防止对表进行任何锁定。这大部分时间都显着提高了可扩展性。我现在把它放在我所有读取的SP上,因为它已经多次保存了我。
答案 2 :(得分:0)
假设加载过程可能很长,您可以在其末尾重建索引。这将删除所有索引碎片,并可以提高选择性能。