加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php - mysql垂直拆分数据表

发布时间:2022-12-19 15:04:43 所属栏目:MySql教程 来源:未知
导读: 在开发过程中,我遇见这么一个问题:在数据库中有一张文章表,用以保存文章的相关信息(如:标题、内容、作者、创作时间、收藏数等),还有另外一张表用以保存用户和文章的收藏关系(主要字

在开发过程中,我遇见这么一个问题:在数据库中有一张文章表,用以保存文章的相关信息(如:标题、内容、作者、创作时间、收藏数等),还有另外一张表用以保存用户和文章的收藏关系(主要字段有:用户ID、文章ID)mysql数据表,在有初次查看该文章时从数据库获取到文章数据后会将数据缓存到redis中,由此提高性能。

但现在因为每次收藏或取消收藏文章时都会更新文章表的收藏数这一字段,并且都会清空该文章的缓存(之所以选择清空而不是更新缓存,是为了避免产生脏数据),下次访问该文章时又会查询数据库并缓存数据,因此会对性能造成一定影响!

mysql只导出表数据_mysql 查看数据库锁表_mysql数据表

因此我决定将文章表的收藏数拆分出来新建一张文章收藏数表(主要字段有:主键id,文章ID,收藏数),并且缓存文章数据时将收藏数分开缓存,这样,每次收藏或取消收藏文章时文章表不用更新,只更新文章收藏数表,更新文章收藏数表后,直接更新缓存(这儿之所以不怕产生脏数据是因为收藏数不是特别重要的数据,就算有一定误差也不会造成恶劣影响)。

使用以上方案,由此产生两个疑问,希望得到大家的解答:

因为文章收藏数中主键ID和文章ID两个字段都是唯一不重复的字段,是否可以不要主键ID字段,直接将文章ID当做主键?

因为如果每次新增一条文章数据时没有同步新增一条对应文章ID的文章收藏数数据,那么每次收藏与取消收藏文章时更新文章收藏数,都会需要先查询文章收藏数表中是否已经存在对应文章ID的收藏数,如果没有就新增一条文章收藏数数据,如果有就直接更新该文章的收藏数,所以,为了简便,我决定每次新增一条文章数据时都同步新增一条对应文章ID的文章收藏数数据,以后更新文章收藏数时就不需要先判断数据是否存在,而可以直接更新数据,在这种情况下,要怎么避免新增文章数据和新增文章收藏数数据之间出现异常导致新增文章数据成功而新增文章收藏数数据失败的情况?我知道可以使用事务来避免,可以有没有更简单的方法呢?MySQL可不可以新增一条数据的同时自动在另一张表里新增一条数据?(数据库渣~)

以上,致谢!

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!