从数据库中选择 count(*) 以计算注册用户数并实时(或几乎实时)创建计数器的有效方法是什么?我不想每秒运行该查询(对数百万用户)..正在考虑每小时运行一次,然后计算新用户并创建一个估计计数器.. 跟踪访问者之类的事情将不起作用,因为它们来自许多站点,必须使用该用户数据库..有什么建议吗?
最佳答案
什么数据库?例如,SQL Server 和 Oracle 都可以在索引(物化) View 中为您维护计数。例如在 SQL Server 上:
create view Metric
with schema binding
as
select count_big(*) as RegisteredUserCount
from dbo.users
where ...;
create clustered index cdxMetric on Metric(RegisteredUserCount);
引擎将为您保持此计数准确,请参阅 Improving Performance with SQL Server 2008 Indexed Views :
select RegisteredUserCount
from dbo.Metric with (NOEXPAND);
此外,您可以缓存此结果并自动失效,请参阅 LinqToCache .
如果您使用的是 MySQL 支持的系统,那么最好的方法可能是计数一次,将计数保存在 memcached 中,并在您注册新用户时更新它。
关于sql - 从数据库实时计算百万用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205264/