sql - 从数据库实时计算百万用户?

标签 sql

从数据库中选择 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/

相关文章:

php - 查询包含逗号分隔字符串的列

sql - 如何在 PostgreSQL 中获取每条具有特定属性集的记录之后的第一条记录?

MySQL - 如何合并来自两个表的数据,使用一个字段的值作为过滤器来计算另一个字段中的值?

PHP/MySQL 外键以 id=0 的形式保存到数据库

mysql - MySQL group by 中不满足条件时显示计数 0

java - 如何优化最常出现的值(数亿行)的检索

mysql - 左连接和计数在 MYSQL 中不能正常工作

php - mysql 索引如何使 SELECT 查询更快

SQL GROUP BY 周(星期一 07 :00:00 to Monday 06:59:59)

mysql - 在使用我的 where 函数进行数学运算时,我的 mysql 查询出现语法错误