面对千万级的数据库,大家能不能给点好的思路?(85分)

  • 主题发起人 主题发起人 del_man
  • 开始时间 开始时间
D

del_man

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,在delphi中如果要关联几张千万级的表查询汇总(大概要抓取几万条左右的数据)。
我察看过数据库服务器的cpu使用情况,如果使用关联查询会占用太多的资源,会影响到
别的程序的正常运行,而且,本身的程序也是很慢。不知道大家有没有什么好的解决办法?
最好能有点源码,谢谢!!分不够,还是那句话,以后我一定补上!!
因为某些原因,我们公司的数据库暂时还不能用存储过程。
 
如果你的查詢比較有規律,絕大多數都在某一年﹐某一個月查﹐很少跨界限查找的。可以
考慮把數据分成几個表﹐跨界限查時再合起來。這樣速度會有不少的提高
如果插入數据不是很頻繁﹐結果要求不是很實時的﹐可以考慮把查詢結果放在一個表中
這樣就不需要頻繁的關聯.甚至可以改數据結构﹐把數据都放到一個表中﹐不要左關聯右關
聯的,有時為了速度是要犧牲一下空間的。
做好索引,這是最起碼的啦
升級机器 這就不用說了
 
TO:lqy169,谢谢你的思路,不过我还是有点不明,还想向你请教一下
“可以考慮把數据分成几個表”你说的是在数据库中建多几张表,把原先大表化为小表吗?
“可以考慮把查詢結果放在一個表中
這樣就不需要頻繁的關聯.甚至可以改數据結构﹐把數据都放到一個表中”把查询结果放到
一个表中?是不是对每个大表分别查询然后分别放到不同的表中,然后才对那些表进行
关联查询?如果程序有多个用户操作的话,那该如何处理呢?
 
建个视图好不好,我觉的最好让数据库去做这些东西,要不在网上把数据传来穿去,会死的
 
做视图?晕,,,
 
to del_man
1。尽可能的优化SQL查询语句(这是最关键)防止不适当的语句造成全表扫描。
2。查询的SQL语句要用到关键字关连,必要时要多建几个索引
3。必要时要指定SQL语句使用哪个索引,已防止数据库自作聪明乱引用索引
4。优化数据库系统的参数,如物理内存分配,锁的个数,cache的大小,线程数量
5。对数据表进行优化,如设定行级锁,分区等
6、购买性能更好的机器。
to SINGLBOY
在千万级数的数据库中用视图会死得很难看。

 
谢谢大家的鼎力支持,其实这个问题我以前就在考虑了,但只是在最近才真正遇到了。我想
机器应该是没有问题的了(ibm as400 820),我曾经想用李维的方法,分批取数据,但在as400/db2
上面好像不行。大家看看还有什么好办法吧。我们现在暂时的方法是不用关联查询,然后再用程序控制
一条条取数据,好像速度是比原来的快,就是程序员累一点。:(
 
同意lqy169,cyhan
 
“我们现在暂时的方法是不用关联查询,然后再用程序控制
一条条取数据,好像速度是比原来的快,就是程序员累一点。:(
----估计是你原来的SQL语句没写好,:)
 
//关联几张千万级的表查询汇总
呵呵! 这话说起来好象蛮轻松的。
建议认真分析业务查询需求,采用归类或记帐的方式为查询需求单独准备数据表,
除了适时的单项记录查询以外。大部分查询用的数据表要与原表相分离.。(个人看法)
 
不好意思,病了几天,结帐了。谢谢大家的帮忙!!!!
 
多人接受答案了。
 
to cyhan,
3。必要时要指定SQL语句使用哪个索引,已防止数据库自作聪明乱引用索引
怎样指定SQL语句使用某一个索引?
 
后退
顶部