我从一本书中拿了这个例子,其中 visitors_today 是来自 visitor_stored 的缓存表。这个想法是使用缓存表存储每天的所有访问者 (visitors_stored)。
Create table visitors_today(
today int unsigned not null default 0,
vcount bigint unsigned not null default 0
)
engine = Innodb;
create table visitors_stored(
v_count bigint unsigned not null default 0,
vcount_date DATE not null primary key
)
engine=MyIsam;
我的问题:
- 我需要设置什么吗?
- 缓存表只是一个普通表,不同之处在于更新 visitors_stored 后数据会被删除?还是仅仅因为存储引擎会更快?
如果我正确理解你的问题,你的例子只是存储今天
vcount
的访问者(visitors_stored
)。这表示
您需要一个脚本来重置
visitors_today
每天的午夜。您需要一个触发器
visitors_stored
来更新visitors_today
表。你为什么要这样做?如果你经常想知道今天有多少访客,你会做一个
代替
这取决于你的服务器是如何调整的,但通常如果你在 中的
vcount_date
列上有一个索引visitors_stored
,它就足够了。如果您的visitors_stored
表太大(比如 >100GB),缓存表可能会有用。如果您开始发现计算列的性能问题,缓存列或表可能是解决之道。