高手指点一下怎样提高性能,主要是设计思路

chenzhaohui555 2010-08-12 02:09:30
我们有一张数据表需要记录各项检查的结果;
每天都要插入大量数据,几万条;
而且需要经常统计查询表中的记录;

对于这种业务,一般怎样设计才能提高效率,减少服务器的压力呢?
加缓存么?还是在表中加索引什么的?
...全文
124 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuwenbao 2010-08-12
  • 打赏
  • 举报
回复
......为什么不知道汇总表的意思?一张千万级的表,你经过几个存储过程或者定时任务,将数据在凌晨时进行汇总统计插入到另外的表中,这就是汇总表,汇总表用来让用户查询报表使用。如果汇总后数据依然过大,则对汇总表进行分区。我曾经的表一天在五百万到一千万左右(监测用户行为的数据表)经过汇总后只达到两三万条。
zhuxr2003 2010-08-12
  • 打赏
  • 举报
回复
一般表数据量超过100万条,加上查询索引后,插入数据会非常慢。所以建议不要即时插入,暂时把数据插入临时表里,然后有一个自动任务,在每天的深夜0点把临时表数据插入正式表里,再清空临时表,每天执行一次。这样可以保证插入数据时速度快速。至于正式表的查询,每个要查询的字段都要加索引。如果你用的是oracle,还可以根据查询需求,建立分区表。
nj_link 2010-08-12
  • 打赏
  • 举报
回复
需要经常统计查询表中的记录 这个很费时。
“不要直接统计数据量大的表,应该弄几张汇总表”,不知大6楼的意思。
新建一个汇总表?那不是每次数据变更的时候都要修改汇总表。

如果是hibernate可以配一个多对1的汇总级联
crazylaa 2010-08-12
  • 打赏
  • 举报
回复
分区、组合索引、物化视图、分表。。。

选择余地很大啊。
nj_link 2010-08-12
  • 打赏
  • 举报
回复
你可以把经常要查的某个字段或者几个做索引 增加索引你可以百度
chenzhaohui555 2010-08-12
  • 打赏
  • 举报
回复
6楼的意思是分成几张表,还是建立汇总的视图?
pyz68 2010-08-12
  • 打赏
  • 举报
回复
这方面不太懂啊~
yuwenbao 2010-08-12
  • 打赏
  • 举报
回复
不要直接将数据插入到数据库,即不要同步插入,应该先写入到一个缓存中,比如berkerly db 比如 memcache
然后每个一定时间段再回写入入数据库中,统计时候,不要直接统计数据量大的表,应该弄几张汇总表
一点点凋落 2010-08-12
  • 打赏
  • 举报
回复
1.如果查询不需要即时,比如今天查昨天的,可以拆分成2张表,当前和历史;
然后给历史表加一堆索引查询。
2.如果要即时查,那就没啥办法了,找一个维度分区。

最后:几万。。这个算小数据量
chenzhaohui555 2010-08-12
  • 打赏
  • 举报
回复
怎么没人回答?
chenzhaohui555 2010-08-12
  • 打赏
  • 举报
回复
没加过索引,怎么加;
需要经常根据时间查询,就在时间字段上加?
我们用SqlServer数据库语句怎么写
plplum 2010-08-12
  • 打赏
  • 举报
回复
zidasine 2010-08-12
  • 打赏
  • 举报
回复
分区 加好索引

楼下继续

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧