你们如何设计数据库的评论?首先谢谢邀请!我以前弄过论坛的数据库,分享给您,希望能有些帮助!简单总结如下:一 分割思想:1 数据库切分:用户库、主题库、回复库2 数据表水平切分:用户库1-n、主
你们如何设计数据库的评论?
首先谢谢邀请!我以前弄过论坛的数据库,分享给您,希望能有些帮助!简单{练:dān}总结如下:
一 分割[读:gē]思想:
1 数据库切{拼音:qiè}分:用户库、主题库、回复库
2 数据表水平切分:用户库1-n、主题库(繁体:庫)1-n、回复库1-n (比如按时间分)
3 分布式数据库(繁:庫):每台计算机中都{dōu}有DBMS的一份完整拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的大型数据库。
4 论坛功能可以进行分隔,不同的服务器【拼音:qì】负责不同的功能
5 用主从数据(繁体:據)库,master是写, slave是读
6 把内容与其它信息分开,好处就是可以让每个表的文件最小化,对数据库操作压力会减小,这样保证每张表数据量很小,操作速度会快,也可以在这里使用缓存
二【读:èr】 索引:
针对是否建立索引有着一定的分fēn 歧:
我觉(繁体:覺)得建立索引还是很幸运飞艇有必要的。理由如下:
1)建立索引可以加快检索速度,对于论坛读和写的比例相差很【拼音:hěn】大,用户体验当然是读多写少,所以综合(繁:閤)考虑还是要用索引,而且是加在常用的读关键jiàn 字上。
2)索引之所以会降低更新的速度,是因为更新还包括对索引(拼音:yǐn)的更新,从更新帖子10万左右,这句话是说,我们可能对发帖标题(繁体:題),发帖内容,回复标题,回复内容这4个字段做更新。需要注意的是,这四个字段并不是用来建立表连接的字段,为(繁:爲)了优化查询速度我们不会在这四个字段上建立索引,所以从这道题目出发,我们建立的{de}索引不会影响更新帖子的性能。只要被索引的列(例如回复表的标题ID)不被频繁更新,即使索引所在地行的其它列被频繁update,索引也不会被更新从而产生性能消耗,一张表一天30万次的索引更新,因它引起的性能消耗小到即使数据库安装在奔腾3单核CPU下都能轻松承担下来。
3)对于更新的速度慢的问题,我们有解决的方法,你提交更新了后,前台[繁:颱]可以让程序返回一个正确结果,后台开个线程异步慢慢跟新数据库就是了,反正更新成功的前提就是假设数据库连接永远正确并处于可靠状态。在数据库和用户之间建立一个缓冲区。#28如,将更新的数据放到内存中,达到一定数量的时候再统(繁体:統)一更新数据库。假如以100条为例,一旦{读:dàn}内存中达到100条数据量将这【练:zhè】100条数据统一入库。减少insert操作#29
三sān 缓冲:
读(繁体:讀)的时候的缓冲开云体育:缓存路由表
主题缓存表(这个取每个区的前面100条记录)澳门威尼斯人,一般来说负载最大的《de》就是主题的第一页,所以缓存表是个小表。
另外使用hibe幸运飞艇rnate,在数据库上面加了一[pinyin:yī]层缓存。
生成(chéng)静态页,缓存最热,最新的帖子。
对于经常更[读:gèng]新的数据都《读:dōu》设计成单独表 ,这样可以最大程度的利用【读:yòng】hibernate缓存
缓存常用的数据和表,利用缓存(练:cún)来将经常被访问的帖子留在内(繁体:內)存中,为每条缓(繁:緩)存的记录添加一个访问时间,如果长时间没被访问就从缓存中删除掉,
避免内存过大,每次用户看帖的时候,首先检(繁:檢)索缓存中时候有需要的帖子,没有的话再访问数(读:shù)据库,然后(繁:後)将数据库返回的帖子信息存储到缓存中。
写的时候的缓冲:数据库和用户之间建立缓存,将更新的数据放在【练:zài】内存中,异步操作的。所有的写贴操作 放{练:fàng}到一个队列然后批量执行插入数据库操作。
预估计的缓冲:假如(练:rú)用户第一次打开某标题,那{拼音:nà}将此标题的相关的前100条数据缓存到客户断《繁体:斷》。这样避开对数据库的直接查询,减少数据库压力。
四 代码[繁:碼]优化
1尽量避免表的连接约束通过代码来实现约束 例如用户id的验证在用户登录时验证这样就可以把帖子表的用户id外键去掉这样就成了单表操作、查询 而连接可以通过触发(繁:發)来实现这样最多是查询了3个表(繁体:錶)而不是连接中的笛卡尔笛卡尔积 回复表的查询限定每次查询的记录数例如限定10条其它的通过点击触发来操作#30"注代码优化【读:huà】容易出现bug 原因有些开发工具本身有优化#30"
五亚博体育 数据库性能调优[繁体:優]
尽量用硬件来代替软件优化 原则就是能用硬件的尽量用硬件 比如磁盘阵列 RAID0 有条件用RAID10 加大内存 .避免小表上建索引 对论坛来说数据帖子和回复不是很重要 可以定期删除一些垃圾帖子 楼主说的几百万条记录的论坛对现在的(pinyin:de)数据库管理系统和计算机来说永不着刻意的优化,定期维护打(pinyin:dǎ)包[读:bāo]备份数据库就可以了
提高速度的关[繁体:關]键:
1.建立合理的索引并在查询时充分(读:fēn)利用
2.避免使用关联,这样避免整表扫描使用关联不如多次使用{练:yòng}主键查询来的快
3.一些处[繁:處]理的功能尽可能放到内存中来做,比如组织主题和回复
4.海hǎi 量缓存(使用静态页面也是个不错的做法)
5 定《拼音:dìng》期对表进行转储
本文链接:http://21taiyang.com/Family/6807650.html
数据库物理《lǐ》结构评论怎么写 你们如何设计数据库的评论?转载请注明出处来源