在SQL server中,分区的循环就像 表 - > on Partition Schema - >在文件组(f1,f2,f3,f4,....)
例如在Oracle中:
SQL Server中的文件组类似于Oracle中的表空间,它是表和索引数据的逻辑存储,可以包含一个或多个操作系统文件。
但MariaDB怎么会有文件组?
答案 0 :(得分:0)
不是这样的。你想要实现什么目标?请记住,存在这样的事情是因为磁盘曾经比数据库小。今天,很少有问题。此外,RAID控制器,SAN等消除了手动决定哪个文件位于何处的需要(甚至是可取性)。操作系统可以连接多个卷,甚至可以即时连接。等
MyISAM能够说明数据的去向以及索引文件的去向。但MyISAM几乎死了。即便如此,将数据放在一个驱动器上,将索引放在另一个驱动器上也是愚蠢的。在执行查询时,首先访问索引,然后访问数据。如果获得任何表现,那就很少了。简单的RAID条带化可能会做得更好。
InnoDB有一种拼写ibdata1,ibdata2等的方法。这可以追溯到操作系统无法使文件大于2GB或4GB的日子。它基本上从未使用过。
InnoDB表可以全部在ibdata1中,也可以分散在各个.ibd文件中。但我真的不认为这就是你在谈论的内容。使用这个"每个表"文件,微小的表存储效率低下。 MySQL 8.0将通过允许您在给定的#34;表空间"中放置多个表来改进这一点,类似于.ibd文件。
InnoDB表空间包含给定表或一组表的所有数据和索引。分区表,当file_per_table时,每个分区都存在于不同的.ibd文件中。这可能会随着8.0而改变。
所有这些都不值得注意。我猜想只有1%的系统需要考虑它。只需让MySQL / MariaDB做它想做的事情;它已经足够好了。
相关的事情......在80年代和90年代,一些供应商拥有"原始设备"访问因为他们认为他们可以比通过操作系统做得更好。同样,OS已经改进,RAID控制器很复杂,并且存在SAN。原来不再重要。 (我不认为MySQL曾经拥有它。)它必将成为供应商的一个重大开发和维护问题。
有多少DBA将tmpdir
放在一个单独的分区中,却发现事情正在崩溃,因为它不够大。同样适用于RAM磁盘。