高性能mysql(四)缓存表和计数器表

来源:互联网 发布:淘宝纠纷率 编辑:程序博客网 时间:2024/06/05 12:04

缓存表(汇总表)

假如统计一个网站23小时发出的消息数,在一个比较忙碌的网站下不可能随时维护一个精准的计数器。代替方案是每小时生成一张汇总表,这样比实时计算要高效的多。

简单的说就是维护一些复杂 耗时的计算 那么用汇总表是比较好的选择。

计数器表

要计数我们可以创建一个计数器表。

create table hit_counter(cnt int unsigend not null)engine=innodb;

每次网站有点击就进行更新

update hit_counter set cnt = cnt + 1;

缺点 每次进行更新都会锁表,那么会有很多的等待。

为了提高性能可以把计数保存在多行中

create table hit_counter(slot tinyint unsigned nut null primary key,cnt int unsigned not null)engine = innodb;

更新数据时可以这样:

update hit_counter set cnt = cnt + 1 where slot = RAND() * 100;

获取数据

select sum(cnt) from hit_counter;

更快的读,更慢的写

为了挺高查询速度,有时候需要一些额外的索引,冗余,汇总表等,这样数据的写入会更慢一些,但是数据的读取会更快一些,这也是常用的优化手段。
原创粉丝点击