首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在数据库(mysql)中存储不同部分的用户统计数据?

如何在数据库(mysql)中存储不同部分的用户统计数据?
EN

Stack Overflow用户
提问于 2014-06-03 03:55:50
回答 1查看 608关注 0票数 2

有一个统一的内容,如论坛、新闻、文章等。内容由一个主题及其评论组成。用户写主题和评论,需要保持对每个用户的统计。

第一个想法-创建一个包含字段user_id、forum_thread_count、forum_message_count、news_thread_count、news_message_count等的常规表users_stat。当论坛或评论中出现新话题时,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    UPDATE users_stat 
    SET forum_thread_count = forum_thread_count + 1 
    WHERE user_id = current_user_id. 

但问题是,可以添加新的部分,然后我们需要做alter table with statistics,这并不好。

也有这样的想法。创建一个包含字段user_id、content (varchar 50)、users_stat的表计数器。当论坛或评论中出现新话题时,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    UPDATE users_stat 
    SET counter = counter + 1 
    WHERE user_id = current_user_id 
    AND content = 'forum_thread'. 

对于第一个主题,当poster的表users_stat中没有记录时,对字段user_id和content建立主索引,然后将统计数据保存到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    INSERT INTO users_stat (user_id, content, counter) 
    VALUES (current_user_id, 'forum_thread', 1 ) 
    ON DUPLICATE KEY UPDATE counter = VALUES (counter + 1). 

但事实证明,“插入”只起一次作用,然后,每次保存时,mysql都会分析整个表以查找重复项。如果设置为大容量,则会降低性能。

有人能提出更多的想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-06-03 04:15:14

类似于你的第三种方法,但是用"content“替换为"content_id",这是一个很小的整数字段,引用contents表。并制作(user_id,content_id)的复合主键以获得更好的性能,制作一个自动增量id,以及一个唯一的(user_id,content_id),即

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
contents(id, name): data example: (1, "Forum Thread")
user_stat(user_id int, content_id int, counter int): data example: (3, 1, 5)

插入和更新:

INSERT INTO user_stat(user_id, content_id, counter) VALUES ($current_user_id, 1, 1 ) ON DUPLICATE KEY UPDATE counter = VALUES (counter + 1)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24006863

复制
相关文章
MySQL实现统计数据并插入数据的存储过程
统计存储过程,这里是将统计的结果插入一个表中,后台可以有定时任务来调此存储过程。以下业务是统计仓库中商品流转情况,包括:日期、商品总数、入库数量、出库数量。
用户8983410
2021/11/01
1.2K0
MySQL - MySQL不同存储引擎下索引的实现
MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,我们这里主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。
小小工匠
2021/08/17
1K0
java中==、equals的不同AND在js中==、===的不同
       1.==操作符:首先,对于非基本数据类型的对象比较,相同内存中存储的变量的值是否相等,注意是相同内存地址的才可,并且数值相同(当然地址相同,值也一定相同)才会返回true.     但是,对于基本数据类型的比较(比如:int flot double等),值相同,"=="比较便会返回true.(这是编译的规则,当进行基本数据类型的比较时,会编译生成if_icmpne指令不会进行比较地址。而进行对象比较时,会生成if_icmpne指令,会比较地址。生成的指令都是不同的)。
洋仔聊编程
2019/01/15
4K0
mysql—mysql中如何存储日期数据
1,特点 1)以YYYY-MM-DD HH:MM:SS[.fraction]格式存储日期时间,在mysql5.6前可以只能存储到秒,在5.6后能存储到微秒 2)datetime类型与时区无关,占用8个字节的存储空间 3)时间范围公元1000-01-01 00:00:00到9999-12-31 23:59:59,存储的时间范围非常广
全栈程序员站长
2021/04/07
5K0
MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程
http://blog.csdn.net/qq_26525215/article/details/52143733
谙忆
2021/01/21
1.1K0
MySQL---数据库从入门走向大神系列(八)-在java中执行MySQL的存储过程
MySQL统计数据库所有表的数据量
场景:mysql统计一个数据库里所有表的数据量,最近在做统计想查找一个数据库里基本所有的表数据量,数据量少的通过select count再加起来也是可以的,不过表的数据有点多,不可能一个一个地查
SmileNicky
2021/12/14
6.9K0
MySQL统计数据库所有表的数据量
在 git 中如何配置用户信息
最近买了台新的笔记本,重新装了一些软件,这次就说说怎么在 git 中配置用户信息吧。
前端西瓜哥
2022/12/21
1K0
在Linux中如何禁止用户登录
默认情况下,创建用户时,将按照/etc/default/useradd文件中定义的为用户分配shell。
用户9104802
2021/11/22
6.7K0
SpringBoot中@Transaction在不同MySQL引擎下的差异性
在springboot进行事务测试的时候,发现事务没有生效,在方法上添加了@Transactional注解并让方法先执行插入操作,接着再抛出个异常,触发事务回滚,代码如下:
是Vzn呀
2022/07/14
1K0
SpringBoot中@Transaction在不同MySQL引擎下的差异性
MySQL中的存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
changxin7
2019/09/10
1.8K0
MySQL存储过程,视图,用户管理
一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL。
石的三次方
2021/01/05
9380
在 Kubernetes 中,如何动态配置本地存储?
Kubernetes 中使用节点的本地存储资源有 emptyDir、hostPath、Local PV 等几种方式。这之中,emptyDir 无法持久化数据,hostPath 方式需要手动管理卷的生命周期,运维压力大。因此在某些场景下,如果用户出于性能和运维成本考虑需要使用本地存储,Local PV 似乎是唯一选择。
CNCF
2019/12/05
3.4K0
在 Kubernetes 中,如何动态配置本地存储?
mysql中的数据库对用户权限做限制
mysql中限定用户对数据库的权限 默认的MySQL安装之后根用户是没有密码的 先用根用户进入: # mysql -u root 执行: mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY “123456”; 用的是123456做为root用户的密码,我这里是做个例子,要是用123456做密码 那还不象不设置密码了:)
全栈程序员站长
2021/07/23
4K0
在python中操作MySQL数据库
本篇主要介绍如何使用pymysql操作数据库,下面直接进入正文 1.查询数据 # coding: utf-8 # author: hmk import pymysql.cursors # 连接数据库 conn = pymysql.connect(host='localhost', # 数据库地址 port=3306, #端口默认是3306,不写这个也可以,如果不是3306则需要在此声明 user='root',
冰霜
2022/03/15
4.5K0
在 Kubernetes 中,如何动态配置本地存储?
Kubernetes 中使用节点的本地存储资源有 emptyDir、hostPath、Local PV 等几种方式。这之中,emptyDir 无法持久化数据,hostPath 方式需要手动管理卷的生命周期,运维压力大。因此在某些场景下,如果用户出于性能和运维成本考虑需要使用本地存储,Local PV 似乎是唯一选择。
kubernetes中文社区
2019/08/27
3.1K0
在 Kubernetes 中,如何动态配置本地存储?
审计对存储在MySQL 8.0中的分类数据的更改
使用敏感信息时您需要拥有审计日志。通常,此类数据将包含一个分类级别作为行的一部分,定义如何处理、审计等策略。在之前的博客中,我讨论了如何审计分类数据查询。本篇将介绍如何审计对机密数据所做的数据更改。
MySQLSE
2020/11/25
4.7K0
tcpdump在mySQL数据库中的应用实践
tcpdump在我们平时运维中充当了很重要的角色,对复杂问题的排查、分析起到了至关重要的作用,确实为运维中的一大利器。
MySQL数据库技术栈
2020/08/05
5.2K0
tcpdump在mySQL数据库中的应用实践
点击加载更多

相似问题

如何将用户点击jsp页面两个不同部分存储到mysql数据库中

10

在mysql数据库中存储可变数量的文件下载统计数据

10

在MySQL数据库中存储不可访问的用户

10

如何在mysql数据库中存储用户活动?

11

MySQL:选择不同的统计数据

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文