性能下降100倍左右。数据库是典型IO密集型系统,CPU都不太重要最重要的是存储了。EMC就做存储都能做到几百亿规模。甲骨文现在都推荐全SSD了。数据库确实吃内存,但是更吃磁盘,一年报废几个也是常事。
一、数据库文件存放在NAS中,会有什么问题
性能下降100倍左右。数据库是典型IO密集型系统,CPU都不太重要最重要的是存储了。EMC就做存储都能做到几百亿规模。甲骨文现在都推荐全SSD了。数据库确实吃内存,但是更吃磁盘,一年报废几个也是常事。所以还必须搞磁盘阵列。即使如此,磁盘阵列全挂也不是那么少见。
不用NAS的主要原因在于两个:
1.数据库是延时敏感型,而NAS多数工作在以太网环境下,而TCP/IP协议决定了这个协议的数据可靠性不够强,IO还可以乱序传送,而数据库是绝不可以乱序的。所以不得不等最慢的那个IO完成再做下一个。
2.除了NETAPP之外,所有的NAS几乎都是在SAN基础的阵列加NAS GATEWAY。那么,多了一层必然增加延时降低效率。
要用nas看中的是数据持久性,扩展性,增值服多,特别是vm场景,且单个nas的总iops和带宽都比本地盘高,所以在负载稍大时,nas对业务层体现出来的性能更高。从单个请求看,协议上的差别开销从来都可忽略,即使是http,协议层上如果性能有差别,一定在crc计算,安全算法,通信模型上的不同; 对于本地盘和nas开销看,主要在因nas拉远,有一次网络开销,对于db的io模型有两类,扫表的顺序大io,考验带宽,网络开销可忽略,索引处理的随机小io,这个需考虑使用什么盘,负载来看,如一次hdd盘随机读10ms,一次网络100us,影响多少可简单估一下,另外网络使用rdma时廷更低,且一旦负载上来后,接近本地盘能力,nas性能更好,所以在想用nas的场景,性能不是问题。但为什么推荐使用nas的少呢,的确有的存储厂商在nas优化不够,另外有兼容性风险,db开发时基本使用本地盘测试,相同os文件操作api,极个别api在本地盘是原子的,但nas是两条命今,在极端场景要出问题,不是说每种db都有问题,自少postgresql要打个补丁。
延伸阅读:
二、分布式存储的优势
可扩展:分布式存储系统可以扩展到数百甚至数千个这样的集群大小,并且系统的整体性能可以线性增长。
高可用性:在分布式文件系统中,高可用性包含两层,一是整个文件系统的可用性,二是数据的完整和一致性
低成本:分布式存储系统的自动容错和自动负载平衡允许在成本较低服务器上构建分布式存储系统。此外,线性可扩展性还能够增加和降低服务器的成本。
弹性存储: 可以根据业务需要灵活地增加或缩减数据存储以及增删存储池中的资源,而不需要中断系统运行。