我在公司见过这样的设计。
一个大的 mysql 表被分割成几十个较小的表,这些表在同一个服务器上的同一个数据库中具有相同的模式,没有任何物理分布,没有表 1. innodb_file_per_table,没有分区等。数据分布均匀,并且所有表的读/写访问模式都是统一的。
从性能角度来看这样做有什么好处?
答案1
如果你的读/写分布均匀,我认为没有性能优势。如果你的写入量很大,并且只写入 2-3 个表,那么你可以从中受益(参见幻灯片 28-34这推介会)。
关于运营效益的几点想法:
- 一旦数据或流量过多,扩展/分片就会变得更容易。
- 根据备份方式,如果您可以确定丢失的数据位于哪个表中,则恢复速度可能会更快。
编辑:还有一个想法:如果查询并行执行,可能会有性能优势 - 您可以从 RAID 中获得更多 IOPS,并且如果工作集适合内存,则可以更好地实现多核系统的本地化。