DiscuzX2附件分表优化

SetYun 发表于 2018-10-20 10:44:39 | 显示全部楼层 |阅读模式
基于版本:Discuz! X 2.0
相对于Discuz!X1.5和之前的Discuz!版本,Discuz!X2.0在附件表上做了分表优化,之前单一附件表结构,如果附件非常多。对服务器的负载要求会很大,在充分考虑附件表结构优化后,Discuz!X2.0对附件表进行了预先分表,合并forum_attachmentfield表,新增forum_attachment_0~9 十个表。这十个表的中0~9的规则为对应tid的个位数字,forum_attachment表作为了附件索引表。在上传附件时,会获取当前版块、主题id,用到getattachtablebytid()函数,添加一个新的附件索引记录,并返回新附件 id。在获取附加时,会先到forum_attachment索引表中搜索相关索引,如果存在,则直接通过tableid获取相应表中的附件信息,在附件相当多的情况下,大大节约了表查询的时间,减轻服务器负载。有新附件时附件记录表先创建索引表然后获取到aid,再插入到attachment_0~9中,包括附件下载次数。附件记录表信息为:
  • aid '附件id',
  •   tid  '主题id',
  •   pid '帖子id',
  •   tableid '附件表id',
  •   downloads '下载次数',
  •   PRIMARY KEY (aid),
  •   KEY tid (tid),
  •   KEY pid (pid)


forum_attachment_0~9表各字段为:
  • //id
  •   aid '附件id',
  •   tid '主题id',
  •   pid '帖子id',
  •   uid '会员id',
  •   //基本属性
  •   dateline '上传时间',
  •   filename '原文件名',
  •   filesize '文件大小',   
  •   attachment '服务器路径',
  •   remote '是否远程附件',
  •   description '说明',
  •   //附属属性
  •   readperm '阅读权限',
  •   price '附件价格',
  •   //图片属性
  •   isimage '是否图片',
  •   width '附件宽度',
  •   thumb '是否是缩率图',
  •   picid '相册图片ID ',
  •   //索引
  •   PRIMARY KEY (aid),
  •   KEY tid (tid),
  •   KEY pid (pid),
  •   KEY uid (uid)
  • ) ENGINE=MyISAM '附件表';

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|SetYun ( 辽ICP备16005250号

GMT+8, 2021-12-1 08:44 , Processed in 0.075179 second(s), 4 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表