SQL Server表分区是不是一定要多个硬盘或CPU才有用

许晨旭 2016-07-25 04:44:40
最近遇到一个数据量比较大的系统,正准备做表分区,想问一下表分区是不是服务器一定要多个硬盘或CPU才有用
...全文
350 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2016-07-25
  • 打赏
  • 举报
回复
分区表的特点: 1、分区表通过把一个物理表,分成多个分区,逻辑上还是一个表,实际上是分成了多个分区,好处是,当有一个分区的数据损坏了,不会影响其他分区,照样能查询,而不是普通的单表,一旦出现损坏,整个表都不能查询。 2、提高可管理性。当数据要迁移,比如历史数据的转移,只需要进行分区的切换,秒级处理,而不是先insert select,然后再delete,这样会影响系统的正常运行,就算是晚上处理,数据量大的情况下,速度还是会非常慢。 3、通过分区消除来提高性能,比如你只查询某个分区时,系统会进行所谓的分区消除,也就是只会去查询那个分区,这样能提高查询的性能。当然,如果不分区,你创建了索引,实际上速度也不会比分区慢多少,因为分区消除虽然提高了性能,也是有开销的,这个开销主要在于 你输入的查询条件,系统要根据这个查询条件,在元数据中确定,到底是哪个分区,然后去改写查询,只从个别分区查数据,这个过程也是有开销的。 4、通过硬盘来提高操作的并行性。如果把分区放到不同的硬盘,那么比如你要读取3个分区的数据,系统可以同时启动3个独立硬盘来读取数据,而硬盘的速度本来就是整个流程中最慢的一环,通过增加硬盘,提高了读取数据的时间,效率显著提高。 但是,另一方面,如果系统有大量的读取操作,而且也有多个分区表,那么情况可能会变的比较复杂。
LongRui888 2016-07-25
  • 打赏
  • 举报
回复
最好是要有多个硬盘,而cpu嘛,现在都是多核,所以多cpu不是问题。 其实分区表最主要的不是提高性能,而是提高可用性,提高管理,然后才是提高性能。
许晨旭 2016-07-25
  • 打赏
  • 举报
回复
引用 4 楼 dashuaiwang1 的回复:
不用,我创建表分区的时候在本机创建分区文件就可以。
你执行的效果怎么样,分区有没有提高性能?
唐诗三百首 2016-07-25
  • 打赏
  • 举报
回复
没有规定"多个硬盘或CPU"才能用分区表, 分区表最好是有多个磁盘分区或CPU, 通过并行提供效率.
dashuaiwang1 2016-07-25
  • 打赏
  • 举报
回复
不用,我创建表分区的时候在本机创建分区文件就可以。
卖水果的net 2016-07-25
  • 打赏
  • 举报
回复
多个 CPU 或多个磁盘,有助于提高效率。 与分区表,是两种优化的手段,可以单独使用,也可以多种手段结合使用;
许晨旭 2016-07-25
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
不是的。 分区表,指的是在数据存储时,按分区规则,把数据分开存放,这里的小表就是分区表; 查询时,可以按分区表查询,目的在于减少扫描表时的 IO,以达到提升效率的目的;
我看到书上说的表分区是用多个CPU并行读取数据来提高效率的
卖水果的net 2016-07-25
  • 打赏
  • 举报
回复
不是的。 分区表,指的是在数据存储时,按分区规则,把数据分开存放,这里的小表就是分区表; 查询时,可以按分区表查询,目的在于减少扫描表时的 IO,以达到提升效率的目的;

22,209

社区成员

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

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