gpt4 book ai didi

php - 在 MySQL 中存储 View /统计信息的最佳方式

转载 作者:可可西里 更新时间:2023-11-01 06:33:50 24 4
gpt4 key购买 nike

我工作的网站没有在“ View ”表中存储个人页面 View :

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 ;

它非常基本,存储 user_id(用户在网站上的 ID)、他们的 IP 地址、url(没有域以稍微减少表的大小)、推荐 url(现在还没有真正使用它和可能会去掉它)、日期(当然是 YYYY-MM-DD 格式)以及 View 发生时的 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 的次数。这可能是我们通常想要使用数据的方式(每天查看一个页面的次数)所以应该使查询非常快,但即使我主要用它来替换“ View ”表(对现在我想我可以按小时显示上周/一个月左右的页面浏览量,然后显示超过该时间的每日浏览量,因此只需要“ View ”表包含上周/一个月的数据)但它仍然很大表。

无论如何,长话短说,我想知道您是否可以给我任何关于如何最好地处理 MySQL 站点中的统计数据/页面 View 存储的提示,目标是保持表的大小) 在数据库中尽可能小,并且仍然能够轻松(并且至少相对快速)查询信息。我稍微查看了分区表,但该站点没有安装 MySQL 5.1。如果您能提供任何其他提示或想法,我们将不胜感激。

最佳答案

您可能希望为页面创建一个表,并让用户 View 引用该表。另一种可能的优化是将用户 IP 存储在不同的表中,也许是一些 session 表信息。那应该会减少您的查询时间。您在归档表方面走在正确的轨道上;同样的优化也应该对此有所帮助。

关于php - 在 MySQL 中存储 View /统计信息的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com