首页 / MYSQL / mysql垂直拆分数据表
mysql垂直拆分数据表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql垂直拆分数据表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3551字,纯文字阅读大概需要6分钟。
内容图文
![mysql垂直拆分数据表](/upload/InfoBanner/zyjiaocheng/152/f3e759de135f4d98aae19f7cd1f340ee.jpg)
但现在因为每次收藏或取消收藏文章时都会更新文章表的收藏数这一字段,并且都会清空该文章的缓存(之所以选择清空而不是更新缓存,是为了避免产生脏数据),下次访问该文章时又会查询数据库并缓存数据,因此会对性能造成一定影响!
因此我决定将文章表的收藏数拆分出来新建一张文章收藏数表(主要字段有:主键id,文章ID,收藏数),并且缓存文章数据时将收藏数分开缓存,这样,每次收藏或取消收藏文章时文章表不用更新,只更新文章收藏数表,更新文章收藏数表后,直接更新缓存(这儿之所以不怕产生脏数据是因为收藏数不是特别重要的数据,就算有一定误差也不会造成恶劣影响)。
使用以上方案,由此产生两个疑问,希望得到大家的解答:
因为文章收藏数中主键ID和文章ID两个字段都是唯一不重复的字段,是否可以不要主键ID字段,直接将文章ID当做主键?
因为如果每次新增一条文章数据时没有同步新增一条对应文章ID的文章收藏数数据,那么每次收藏与取消收藏文章时更新文章收藏数,都会需要先查询文章收藏数表中是否已经存在对应文章ID的收藏数,如果没有就新增一条文章收藏数数据,如果有就直接更新该文章的收藏数,所以,为了简便,我决定每次新增一条文章数据时都同步新增一条对应文章ID的文章收藏数数据,以后更新文章收藏数时就不需要先判断数据是否存在,而可以直接更新数据,在这种情况下,要怎么避免新增文章数据和新增文章收藏数数据之间出现异常导致新增文章数据成功而新增文章收藏数数据失败的情况?我知道可以使用事务来避免,可以有没有更简单的方法呢?MySQL可不可以新增一条数据的同时自动在另一张表里新增一条数据?(数据库渣~)
以上,致谢!
回复内容:
在开发过程中,我遇见这么一个问题:在数据库中有一张文章表,用以保存文章的相关信息(如:标题、内容、作者、创作时间、收藏数等),还有另外一张表用以保存用户和文章的收藏关系(主要字段有:用户ID、文章ID),在有初次查看该文章时从数据库获取到文章数据后会将数据缓存到redis中,由此提高性能。
但现在因为每次收藏或取消收藏文章时都会更新文章表的收藏数这一字段,并且都会清空该文章的缓存(之所以选择清空而不是更新缓存,是为了避免产生脏数据),下次访问该文章时又会查询数据库并缓存数据,因此会对性能造成一定影响!
因此我决定将文章表的收藏数拆分出来新建一张文章收藏数表(主要字段有:主键id,文章ID,收藏数),并且缓存文章数据时将收藏数分开缓存,这样,每次收藏或取消收藏文章时文章表不用更新,只更新文章收藏数表,更新文章收藏数表后,直接更新缓存(这儿之所以不怕产生脏数据是因为收藏数不是特别重要的数据,就算有一定误差也不会造成恶劣影响)。
使用以上方案,由此产生两个疑问,希望得到大家的解答:
因为文章收藏数中主键ID和文章ID两个字段都是唯一不重复的字段,是否可以不要主键ID字段,直接将文章ID当做主键?
因为如果每次新增一条文章数据时没有同步新增一条对应文章ID的文章收藏数数据,那么每次收藏与取消收藏文章时更新文章收藏数,都会需要先查询文章收藏数表中是否已经存在对应文章ID的收藏数,如果没有就新增一条文章收藏数数据,如果有就直接更新该文章的收藏数,所以,为了简便,我决定每次新增一条文章数据时都同步新增一条对应文章ID的文章收藏数数据,以后更新文章收藏数时就不需要先判断数据是否存在,而可以直接更新数据,在这种情况下,要怎么避免新增文章数据和新增文章收藏数数据之间出现异常导致新增文章数据成功而新增文章收藏数数据失败的情况?我知道可以使用事务来避免,可以有没有更简单的方法呢?MySQL可不可以新增一条数据的同时自动在另一张表里新增一条数据?(数据库渣~)
以上,致谢!
1.可以,但这里你需要做一个联动就是在增删文章的时候也要对文章收藏数表进行操作
2使用mysql的udf,详情请看MySQL :: MySQL 5.1 Reference Manual :: 22.3 Adding New Functions to MySQL 然后通过trigger在文章表delete
和insert
之后进行函数的调用,写入到文章收藏数表中去。大致是这个样子。
内容总结
以上是互联网集市为您收集整理的mysql垂直拆分数据表全部内容,希望文章能够帮你解决mysql垂直拆分数据表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。