MySQL的innodb_file_per_table和“太多的表”

我运行的MySQL(5.0,但我不认为这对4.1之后的任何事情),我已经看到有关使用innodb_file_per_table表的innodb_file_per_tableconfiguration选项的build议。 通常这样做是为了更好地控制InnoDB表使用多less磁盘空间,因为即使该表稍后被丢弃,该空间也不会被恢复。

但是,每当我看到这个build议是说,如果你没有很多的表( 这里是一个例子)使用它。 所以我的问题是,有多less桌子太多了?

我有一个应用程序正在运行许多不同的客户端(大约50,但可能会增长到接近100),每个数据库有135个表中。 13,500张桌子太多了吗?

这是一个很好的表格,但是这里要记住的是,并不是所有的表格都会一次打开 – 大多数情况下,您将打开文件的MySQL参数设置为大约300-500,MySQL本身将会保持你的系统上最活跃的内存表池(如果你愿意的话),就像内核如何保持应用程序的内存页一样。

作为系统pipe理工具,我个人坚信每张表的文件; 虽然它确实存在权衡,但可以保持每个客户的表格不同(甚至可以通过客户数据库将它们分散到不同的磁盘 – RAID,SAN,DAS等),然后将原始的如果需要的话,可以手动进行优化,如果需要的话可以优化,等等。 你付出的主要代价是在写入过程中更多的fsync()调用,如果你写了很多表,也会降低性能,但总的来说不算太坏。