mysql视图统计总数_在MySQL中存储视图/统计信息的最佳方法

该博客探讨了一个网站如何存储和管理大量的页面视图数据。目前使用两个表,`views`存储详细信息,`views_archive`进行每日汇总。随着数据量的增长,查询速度变慢,作者寻求优化建议,包括可能的分区表策略,目标是减小表大小并提高查询效率。
摘要由CSDN通过智能技术生成

我正在使用一个将单个页面视图存储在“视图”表中的网站:

CREATE TABLE `views` (

`view_id` bigint(16) NOT NULL auto_increment,

`user_id` int(10) NOT NULL,

`user_ip` varchar(15) NOT NULL,

`view_url` varchar(255) NOT NULL,

`view_referrer` varchar(255) NOT NULL,

`view_date` date NOT NULL,

`view_created` int(10) NOT NULL,

PRIMARY KEY (`view_id`),

KEY `view_url` (`view_url`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

它非常基本,存储用户id(站点上的用户id)、他们的IP地址、url(没有域来稍微减小表的大小)、引用url(现在没有真正使用它,可能会去掉它)、日期(当然是YYYY-MM-DD格式)和查看发生时的unix时间戳。

当然,这个表变得相当大(目前有400万行,而且是一个相当年轻的站点),并且在它上运行查询很慢。

对于一些基本优化,我现在创建了一个“views_archive”表:

CREATE TABLE `views_archive` (

`archive_id` bigint(16) NOT NULL auto_increment,

`view_url` varchar(255) NOT NULL,

`view_count` smallint(5) NOT NULL,

`view_date` date NOT NULL,

PRIMARY KEY (`archive_id`),

KEY `view_url` (`view_url`),

KEY `view_date` (`view_date`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

这将忽略用户信息(和引用url),并存储每天查看url的次数。这可能是我们通常希望使用数据的方式(一个页面每天被查看多少次),因此应该使查询变得非常快,但即使我主要使用它来替换“views”表(现在我想我可以按小时显示上周/月左右的页面视图,然后显示超出此范围的每日视图,因此只需要“views”表包含上周/月的数据),但它仍然是一个大表。

总之,长话短说,我想知道你是否能给我一些提示,告诉我如何最好地处理MySQL站点中统计数据/页面视图的存储,目标是使数据库中表的大小尽可能小,并且仍然能够方便地(至少相对快速地)查询信息。我看了一些分区表,但是这个站点没有安装MySQL 5.1。如果您能提供任何其他建议或想法,我们将不胜感激。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值