看板C_Sharp
标 题Re: [问题] 连结MS SQL产生系统效能低落
发信站芭乐的故乡 (Wed Aug 12 01:05:27 2009)
转信站ptt!news.ntu!ctu-gate!news.nctu!news.ccu!reader.ccu!BalaBBS
※ 引述《[email protected] (SinclairShen)》之铭言:
你的bottleneck看起来出在你的web server机会比较大
你所谓3G记忆体吃完,指的是吃掉SQL Server的3G
还是你呼叫SQL那台机器的3G ?
还有一次要传送20+万笔资料,也会占据大量网路频宽
所以你这个需求有很多地方都会出现bottleneck
基本上很少需求会需要一次把20万笔资料一次都捞出来
因为人眼一次观看20+万笔资料是一点意义都没有的
建议你前端程式可以做paging(分页),减少你一次捞那麽多的资料拖垮两边效能
那我猜或者你可能想拿这20+万笔来做运算
如果是的话,请在SQL Server算完再把结果回传出去即可
还有如果一定需要一次捞那麽大的资料量,那你不应该采用DataSet
应该使用DataReader即可
其实还有很多调整效能的方法
例如Table可以做index,还有你如果觉得Table资料量那麽大,可以做Partition
甚至从硬碟下手,提高IO速度都可以大幅提高效能
> 能否请教各位大大一个问题...
> 目前有一个期货的资料库(future2),
> 里面有一个资料表(futureData),
> 共有八百万笔资料,
> 在select时就会把电脑3G的记忆体吃完,
> 也尝试过改成以"每日"来select资料(每日大约有20万笔资料),
> 也是会很快的把记忆体吃完,
> 最後系统会变得非常慢…
> 把资料放到DataSet之後,已经有把连资料库的部份close和dispose了,
> 那所占的记忆体空间怎麽没被释放掉?
> 谢谢
> source code:
> DataSet enDataSet = new DataSet();
> enDataSet.Tables.Add("future_data");
> public void conDB_future(string strSql)
> {
> string connStr = "Data Source=localhost;
> database=future2;uid=sinclair2;
> pwd=222;Connection Timeout=3600;pooling=false;";
> SqlConnection conn1 = new SqlConnection(connStr);
> conn1.Open();
> SqlDataAdapter conAdapter1 = new SqlDataAdapter(strSql, conn1);
> conAdapter1.Fill(enDataSet, "future_data");
> conAdapter1.Dispose();
> conn1.Close();
> conn1.Dispose();
> }
> public void button1_Click(object sender, EventArgs e)
> {
> string strSql = "";
> strSql = "select * from futureData ";
> //
> //strSql = "select * from futureData where 交易日期='" + sData + "'";
> //
> conDB_future(strSql);
> }
--
◥◣ │◢ 我说拔辣!!◣╭─────────╮ ◢香蕉!!◣ \ ◢◤ˋ
ˋ ˊ▊ ●◤◥ ◤│ IP:140.123.174.1▂▃▅▆▇ ◥ ◤◥ ● ▊"
ˊ
" " ▋╯ ▁▃ DN:bala.twbbs.org│ ╰◢◤ "
∵ ∵▌▂▃▄▅▆▇█ ╰─────────╯《中正资管‧芭乐的故乡》 ▋!
!◢◤ FR: 114-45-174-120.dynamic.hinet.net ◢◤ ◢