让我们想象一下,我们有一个高流量项目(一个管道站点),它应该使用这个选项(而不是实时)提供排序。视频数量约为200 K,所有有关视频的信息都存储在MySQL中。每日视频浏览量约为1.5KK。作为仪器,我们有硬盘驱动器(文本文件),MySQL,Redis。
Views
top viewed
top viewed last 24 hours
top viewed last 7 days
top viewed last 30 days
top rated last 365 days
我该如何储存这些资料?
第一个想法是记录对文本文件的所有访问(例如,每小时一个文件,例如visits_200
以下查询在插入单行时耗时1-10秒
INSERT INTO site_stats (stats_id, page_id, stats_time) VALUES(N, N, NOW());
stats_id和page_id是整型的
MySQL慢日志
Count : 80049 (26%)
Time : 184467445311844 s total, 2304431602 s avg, 1 s to 18446744073709 s max
95% of Time : 337702 s total, 4 s avg, 1 s to 78 s max
Lock
快速方法描述:
我有两张桌子,我们把它们命名为第一桌和第二桌。每个表记录都有其作者(用户)的id。每个用户的记录没有限制。
我想为每个用户运行一个统计页面。
例如,当John登录时:
A类(名单)的20 %-B类的150 (名单)
演示代码
$a = mysql_query("SELECT * FROM A WHERE userID='$userID'");
$b = mysql_query("SELECT * FROM B WHERE userID='$userID'");
$a_num=mysql_num_rows($a);
希望统计在一小时内记录的类型数量。
我可以用下面的代码计算类型的数量:
SELECT count (left (Barcode,9)) as T_Count, left (Barcode,9) as T
FROM table
group by left (Barcode,9)
并且可以使用此代码每小时计算项目(包括所有类型):
SELECT Year, Month, Day, Hour, COUNT(T) AS "Items per Hour"
FROM
(
SELECT DATEPART(YEAR,timestamp) Year, DATEPART(MONTH,timesta
因此,我有一个MySQL数据库,它每小时统计具有给定使用级别的服务器的数量,如下所示:
Date Status Population
2012-01-13 15:33:40 UP Standard
2012-01-13 15:33:40 UP Light
2012-01-13 15:33:40 UP Heavy
2012-01-13 15:33:40 UP Light
2012-01-13 16:33:40 UP Light
2012-01-13 16:33:40 UP Very Heavy
2012
我有许多帖子保存到MySQL上的InnoDB表中。该表具有列"id“、"date”、"user“、"content”。我想做一些统计图表,所以我最终使用了以下查询来获得昨天每小时的发帖量:
SELECT HOUR(FROM_UNIXTIME(`date`)) AS `hour`, COUNT(date) from fb_posts
WHERE DATE(FROM_UNIXTIME(`date`)) = CURDATE() - INTERVAL 1 DAY GROUP BY hour
这将输出以下数据:
我可以编辑这个查询,以获得我想要的任何一天。但
我正在工作的一个网站,其中有10个明星评级系统。所有评级都存储在tbl_rating中,并具有属性:
id
heading
description
rating (number of stars, 1 to 10)
shop_id (each rating belongs to a shop - my site is a catalog of shops)
我的问题是,如何才能最好地计算一家商店的平均评级(基本原则是,我只需将所有评级与特定的shop_id相加,并将其除以这些评分的数量)。每一家商店都有列avg_rating,我可以在那里存储价值。
有没有办法让MySql数据库每小时统计一次这