有人向我解释说,将数据分成 13 个表的动机是,所有这些表都使用单独的数据文件,并且这些数据文件被写入 13 个物理硬盘驱动器。所以每张桌子都有自己的硬盘,
这是一个声明:工作中的白痴。
表不存储在磁盘上,而是存储在可以跨越多个数据文件的文件空间中。请注意这一点……因此您可以拥有一个文件空间,该文件空间在 13 个磁盘上包含 12 个数据文件,并且一个表将分布在所有 13 个表上。无需玩愚蠢的游戏来分配负载,只需阅读文档即可。
即便如此,我还是严重怀疑 13 盘的速度是否很快。真的。我私下运行了一个较小的数据库(只有 800gb),它有 6 个单独的数据磁盘,我目前的工作任务是三个数字的磁盘(即 100+)。请不要将 13 张光盘命名为大型数据库。
无论如何,应该需要分发数据,而不是 UNION,而是分区表(获得标准的 sql 服务器,尽管是企业版功能)是要走的路。
请注意,该数据库大约为 300-400 GB,并且每天以 1.5-2 GB 的速度增长。
找一个像样的服务器。
我想知道这种方法真的是最好的方法吗?
哦,硬件。获得一个用于数据库的 SuperMicro 盒子,高 2 到 4 个机架单元,SAS 背板,24 到 72 个磁盘插槽。是的,一台一台电脑。
废弃那些显然不应该使用数据库的人提出的每月一次的 blabla table 废话。都在一张桌子上。使用文件空间和多个数据文件来处理将所有表分配到各种磁盘中的负载。除非...
...您实际上意识到像这样运行光盘是严重的忽视。RAID 5 或 RAID 6 或 RAID 10 是有序的,否则当磁盘发生故障时您的服务器可能会关闭,这将发生并且重新安装 600gb 数据库需要时间。我为我的数据磁盘运行 RAID 10,然后私下拥有大约 10 亿行的表(并且在工作中我们每天添加大约这一点)。鉴于数据库的小尺寸,几个 SSD 也会有所帮助....他们的 IOPS 预算意味着您可以使用 2-3 个磁盘并获得更快的速度。如果这不可能,我敢打赌,这些光盘是 7200 RPM 的慢速 3.5" 光盘……升级到企业级光盘会有所帮助。我个人使用 300gb Velociraptors 用于数据库,但需要使用 15k SAS 光盘; )
Anyho,这听起来真的很糟糕。太糟糕了,我要么很高兴我的实习生想出了一些聪明的东西(因为它肯定会超出实习生的头脑),要么我的开发人员会在我发现它的那一刻停止为我工作(基于严重的无能,感觉可以在法庭上自由质疑)
重组它。还要小心任何批处理 - 那些需要错开时间,以免它们与备份重叠。一个简单的低速磁盘只能提供这么多的 IO。