Mysql postgres计数或总和忽略脏东西

Mysql postgres计数或总和忽略脏东西,mysql,sql,database,postgresql,sum,Mysql,Sql,Database,Postgresql,Sum,我有一个索引,其中必须汇总的信息在索引中。索引看起来像这样(键,sumable\u属性) 现在如果我说: SELECT sum(sumable_attribute) from table where key between 1 and 1000000 如果我们能够沿着b-树的链接叶子运行并收集sumable_属性,那将是完美的 但是:MVCC告诉我们检查数据的可见性。。。我不在乎我的结果是否100%正确,只要它是快速的。MyISAM有点快 我如何告诉postgres忽略这一点?PostgreS

我有一个索引,其中必须汇总的信息在索引中。索引看起来像这样
(键,sumable\u属性)

现在如果我说:

SELECT sum(sumable_attribute) from table where key between 1 and 1000000
如果我们能够沿着b-树的链接叶子运行并收集sumable_属性,那将是完美的

但是:MVCC告诉我们检查数据的可见性。。。我不在乎我的结果是否100%正确,只要它是快速的。MyISAM有点快


我如何告诉postgres忽略这一点?

PostgreSQL目前实现了“读取已提交”和“可序列化”。您可以使用
readuncommitted
请求脏读,但您将获得“readcommitted”隔离级别

由于默认值为
readcommitted
,因此您可能正在使用PostgreSQL提供的最快隔离级别


但是发布
EXPLAIN ANALYZE query\u name\u或\u sql\u语句的输出可能会给我们一些想法。

如果你不关心数据库中数据的准确性,你可能应该远离键盘一步,直到你这么做。我也不知道MVCC与此有什么关系。如果今天每个人都有问题怎么办?想象一下,你有一家银行,并且对有多少现金可以用来快速做出决定感兴趣。你不能告诉我你在乎有人从自动取款机上取10美元。就绪脏数据在数据库中非常常见,所以请不要告诉我这是错误的。在需要的上下文中,结果是否为0,01%并不重要。请尝试根据您实际想要的内容重新表述问题。例如,“我想运行这个查询,但它太慢了。这是我的索引。我能做什么?”这不是MVCC的直接结果,而是Postgres中的索引块不携带MVCC信息的结果。这就是为什么表中的检查是必要的。Oracle和其他也实现MVCC的公司在索引中有可见性信息,因此可以完全满足索引中的查询。目前也有计划在Postgres上实现这一点,但这是未来的讨论(9.1版不会发生)好吧,这更符合理论,因为我仍在决定使用哪个数据库系统。但这是市长的缺点。不可能吗?这意味着我必须使用多维数据集来保持可接受的性能,这正是我不想做的…:-(我脑子里能想到的唯一解决办法是为总和创建一个表,并编写一个触发器以使其保持最新状态。(并且,也许还可以编写另一个每天运行“n”次的过程,以确保存储的总和和计算的总和同步。)如果我是你,我会构建、加载和测试。现在每个人都提供免费版本的DBMS。我不止一次对实际性能感到惊喜。PostgreSQL中的另一种方法可能是使用部分索引。不过,我不知道这是否适用于你的情况。另一个想法是:将索引放在实体上的表空间中-状态磁盘。或者可能将表和索引放在SSD上。