办公地址

甘肃兰州市城关区焦家湾路260号天运小区A栋1002室

服务城市
中国
时间
周一 - 周五 9:00am-17:30pm
lzwd@gsidc.net.cn
24 X 7 在线服务

技术动态

维动CMS内容数据分表储存方案

  • 发布时间:2024-09-22 17:42:45
  • 发布者:lzwd
  • 浏览:0

通常情况下,MySQL在单表数据超过100万,执行效率开始变慢,需要根据业务量进行硬件升级和数据库优化,而数据库优化主要包括:表结构优化、索引优化、SQL语句优化、分区储存、分表存储等等,本文专门来介绍数据库优化之一的分表储存优化。

分表储存,如果一张表中的数据可以分为多种不同的类型,并且对不同类型的数据同时操作的场景不多时,可以考虑把不同类型的数据保存在不同的表中。或者可以将一个大表拆分成多个小表,从而减小锁的粒度。比如某个表的访问频率很高,某个写操作只更改个别列的数据,而其他未被修改的列可能被别的查询请求访问,这时就可以通过分表来提高查询效率。

大部分cms程序都会把内容数据压缩到一张表中,如下图结构:

image

所有的内容都储存在这种表中,当数据量达到上百万以后,查询速度就会延迟。


分表储存方案


一、按内容模块储存数据

迅睿内容模块原理是按不同类型的数据创建,比如文章模块、图集模块、商品模块,这些模块的内容表都是分开储存的,如下图结构:

image

image

image

这样可以将网站的数据合理的按储存类别进行规划创建模块,独立模块更加有利于大数据储存。


二、按栏目进行主表分表储存(VIP支持)

image

按栏目作为分表,比如网站数据量有100w,按5个栏目分表,平均每个栏目储存20w数据,前端查询时在20w数据就比查询100w数据快很多。

配合(一)多模块+栏目分表可以大大提示储存效率。


三、内容附表无限分表

image

模块附表字段储存,通常情况下会把一些不用于列表显示的字段储存到data表,这样可以减轻查询表的字段负担,data表将按10w数据基数进行无限分表储存。