当前位置: 代码迷 >> Sql Server >> 单个数据文件超过50GB会对数据库的操作有影响吗?解决方案
  详细解决方案

单个数据文件超过50GB会对数据库的操作有影响吗?解决方案

热度:72   发布时间:2016-04-24 10:07:50.0
单个数据文件超过50GB会对数据库的操作有影响吗?
数据库单个数据文件达到90GB,对查询,更新,删除,插入有性能上的影响吗?
我个人认为会有影响,但是我没找到具体的数据。
文件太大对MEMORY,IO,CPU哪个影响更直接?

请大家说说自己的看法,当然,一定要有依据。

本人使用性能计数器对公司服务器监控超过1各月,每天9点-18点进行监控,发现了一些问题,
但数据不够,无法确认。
------解决方案--------------------
大文件通常来说有不少问题或者风险,如果可以,当然适当处理一下好,但是不要随意弄,文件拆的容易,合并就没那么容易了,先等你的检测数据再回答
------解决方案--------------------
单个文件上T的飘过;
单个文件过大导致的弊端主要是在迁移的时候,需要更多考虑空间是否满足
按照目前RAID的普及程度,从物理上讲,你的一个文件实际上是写入多块磁盘的,IO上是由一组磁盘提供支持;

但更多的数据文件,可以得到更多磁盘的IO支持,这也是为什么建议划分多个文件的需求;但数据文件也不是越多越好,磁盘碎片化在数据库大到一定程度的时候,其影响也是不容忽视的;
一般个人建议100G左右,或以上的库,数据文件不低于4个,但也不要超过16个;
------解决方案--------------------
对性能没有影响:
1. 对CPU 和内存来讲,只关心数据来没来,不关心是哪里来的,我就是一个广计算、加工和缓存的功能;
2. 对RAID 来讲,你拆分 10 个文件,也有这 5 块盘支撑,你单一文件,也是这 5 块盘支撑;
3. 具体的数据存储,单一的文件,某一张表(或某个索引)所占的空间连续性要比多个文件所占空间的连续性的可能性要高;

有影响的方面:
1. 单位一文件在复制时,可能不知道已经拷了多少 M 了,但是多个文件,就可以看到 10 个文件,我已经拷了 4 个了,能知道一个大概的进度;
2. 如查想搭一个临时的测试环境,把数据备出来的,可能测试机的单一磁盘空间不够用了,加了磁盘还得做 RAID ,前期准备了 2 天,实际使用了 15 分钟。

个人意见,欢迎讨论。
------解决方案--------------------
我觉得应该以机器的实际硬盘情况为准。

如果是单磁盘下,一个mdf或ndf超过50G不是啥大事,几百G上T的文件都常见,也没见对性能有啥影响。如果想提高性能倒是可以考虑多加块磁盘把文件分散一下。

如果是虚拟机情况下,假设文件容量超过某些小硬盘的空余空间需要跨硬盘协同存储了,则可能影响读取效率,但这种情况非常少见。

如果是固态硬盘,则需要监控硬盘空间,这时数据文件过大就有风险了,需要做监控和风险控制方案保证磁盘不会爆掉。

总的来说,单文件过大对性能没影响,但分散到多文件则可能会带来性能提升,但需要良好的规划。
  相关解决方案