sql 2005 单表一亿条数据慢求解决办法。

xmglvyqx 2010-07-22 04:20:16
现在在SQL2005数据库中某一张表以每天50到100W 条的数据增长量增长,对SQL的使用主要是往其 中写入数据,每个月会从此表中出一张报表,而现在这张表中已经快1亿条数据了,并且已经做过索引但查询时速度还是很慢。现在有3个问题希望高人解答。
1.别人都说SQL 2005 表中的数据过亿条数据库会瘫痪不知道是否真是这样。
2.这边要求数据的保存6个月不知道能否通过表分区实现让这张表存储成多个文件,提高访问速度。
3.如果能存储成多个文件,如果我设置成1星期存储成一个文件,我直接删除这个文件就把此星期的数据删除。
...全文
465 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenyu_7240 2010-11-05
  • 打赏
  • 举报
回复
</div>
光义 2010-07-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 claro 的回复:]
引用 8 楼 xmglvyqx 的回复:
这边存储用的磁盘整列,然后逻辑上之划分了一个盘符,我看了分区表上说要把不同的文件放到不同的磁盘上提高效率我这用的磁盘整列怎么玩呢,都把数据放到一个逻辑盘符上有问题吗?

。。。

准确说,磁盘是指disk,非partition,能得到更好的I/O读写。
如果没有更多的disk和money,将日志和数据或者文件组分开不同的区也不失为一种方式。
……
[/Quote]

顶下...
claro 2010-07-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xmglvyqx 的回复:]
这边存储用的磁盘整列,然后逻辑上之划分了一个盘符,我看了分区表上说要把不同的文件放到不同的磁盘上提高效率我这用的磁盘整列怎么玩呢,都把数据放到一个逻辑盘符上有问题吗?
[/Quote]
。。。

准确说,磁盘是指disk,非partition,能得到更好的I/O读写。
如果没有更多的disk和money,将日志和数据或者文件组分开不同的区也不失为一种方式。

把数据放到一个逻辑盘符上有问题,会产生磁盘I/O争用,从而造成waiting。
you_tube 2010-07-23
  • 打赏
  • 举报
回复
1.别人都说SQL 2005 表中的数据过亿条数据库会瘫痪不知道是否真是这样。
绝对不会

2.这边要求数据的保存6个月不知道能否通过表分区实现让这张表存储成多个文件,提高访问速度。
分区表只能提高IO吞吐量,一般查询没速度提高可言

3.如果能存储成多个文件,如果我设置成1星期存储成一个文件,我直接删除这个文件就把此星期的数据删除。
还有这样处理的??

Q315054403 2010-07-23
  • 打赏
  • 举报
回复
1.别人都说SQL 2005 表中的数据过亿条数据库会瘫痪不知道是否真是这样。
**别人都说外国的月亮更圆。。。别人云亦云
2.这边要求数据的保存6个月不知道能否通过表分区实现让这张表存储成多个文件,提高访问速度。
**分区是好办法,分区是改善可管理性,而非性能<当然,设计好文件组存储分布,会利用好并行查询,但2008才对并行处理得更好>
3.如果能存储成多个文件,如果我设置成1星期存储成一个文件,我直接删除这个文件就把此星期的数据删除。
**估计RAID5,存为多个文件也就没什么区别,磁盘规划不够到位

有偿支持
xmglvyqx 2010-07-23
  • 打赏
  • 举报
回复
感谢大家的回复现在还有个这样的问题,这边存储用的磁盘整列,然后逻辑上之划分了一个盘符,我看了分区表上说要把不同的文件放到不同的磁盘上提高效率我这用的磁盘整列怎么玩呢,都把数据放到一个逻辑盘符上有问题吗?
cheng20100915 2010-07-23
  • 打赏
  • 举报
回复
...........
obuntu 2010-07-22
  • 打赏
  • 举报
回复
1、行数的限制好像是2的几次方了,现实生活中的记录一般是不可能达到的,所以没见过表的记录过多造成瘫痪的。

2、你这种情况,分区蛮合适的。

3、看看大家不知道还有没有好的方案分享,顺便帮顶。

Austindatabases 2010-07-22
  • 打赏
  • 举报
回复
如果怕麻烦可以建立多个NDF 在不同的逻辑盘上当然不同的物理盘更好,有效的分解一些 I/0 上的瓶颈

当然分区表是不错的选择,但你的找到对应的切割点
xmglvyqx 2010-07-22
  • 打赏
  • 举报
回复
谢谢大家的回复,其实那些历史数据除了每个月要一个报表,然后要一个半年报就没有太多作用了。而现在数据库上还有其他的数据库是否我这个库大了会对其他的数据库有影响? 只要数据库不慢,对其他数据库没有影响就好了,做表分区能解决吗?
dla001 2010-07-22
  • 打赏
  • 举报
回复
你的表就算是存一个月的数据,按你给的信息,最多时一个月有3000W。 报表的生成速度是否在你们可承受范围内????

永生天地 2010-07-22
  • 打赏
  • 举报
回复
分区表吧

[sql server] SQL Server 2005中的分区表
http://blog.csdn.net/xys_777/archive/2010/07/22/5754595.aspx
dla001 2010-07-22
  • 打赏
  • 举报
回复
1。不会的,我们的表都11个亿多了,没崩溃,都是历史数据,不怎么查
2。可以,要设计好。能不能提高速度要看你的硬件,还有数据文件是怎么分配的。
3。不行,不是你想象的那样。

你可以使用分区表的滑动窗口管理方法。此方法可以瞬间加载,去掉大量数据。DDL操作。非常快。
ctoygl 2010-07-22
  • 打赏
  • 举报
回复
1.言重了,我们数据库里的记录过亿的也不少,真不是那么容易就瘫痪的
2.分区存储可能会降低索引深度,对读有好处,如果主要是写操作,通过分区删除历史数据是非长快的,当然要采取将分区中数据移到别的表的方式
3.分多个文件提高访问速度的关键是文件是否是分布于多个物理磁盘上,否则都在一个磁盘上,对性能提升似乎没什么作用
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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