Discuz附件分表优化
DiscuzX2附件分表优化*************************************************
本教程基于版本: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 '附件表';
页:
[1]