Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

X2附件分表优化

[复制链接]
vinsonwang 发表于 2011-4-18 09:44:57 | 显示全部楼层 |阅读模式
*************************************************
** 本教程基于版本: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中,包括附件下载次数。附件记录表信息为:
  1. aid '附件id',
  2.   tid  '主题id',
  3.   pid '帖子id',
  4.   tableid '附件表id',
  5.   downloads '下载次数',
  6.   PRIMARY KEY (aid),
  7.   KEY tid (tid),
  8.   KEY pid (pid)
复制代码
forum_attachment_0~9表各字段为:
  1. //id
  2.   aid '附件id',
  3.   tid '主题id',
  4.   pid '帖子id',
  5.   uid '会员id',
  6.   //基本属性
  7.   dateline '上传时间',
  8.   filename '原文件名',
  9.   filesize '文件大小',   
  10.   attachment '服务器路径',
  11.   remote '是否远程附件',
  12.   description '说明',
  13.   //附属属性
  14.   readperm '阅读权限',
  15.   price '附件价格',
  16.   //图片属性
  17.   isimage '是否图片',
  18.   width '附件宽度',
  19.   thumb '是否是缩率图',
  20.   picid '相册图片ID ',
  21.   //索引
  22.   PRIMARY KEY (aid),
  23.   KEY tid (tid),
  24.   KEY pid (pid),
  25.   KEY uid (uid)
  26. ) ENGINE=MyISAM '附件表';
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-17 08:28 , Processed in 0.020741 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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