我正在考虑将我的 mysql 服务器中的一些表从 MyISAM 转换为 InnoDB。这些表肯定会从这种变化中受益,因为这些表会收到很多写入请求,同时还会收到相当多的读取请求。
但是,它们经常与一些几乎没有任何写入的表连接在一起。连接 MyISAM 和 InnoDB 表时是否会降低性能,还是一切都会正常?
第二个问题:在晚上备份期间,我将数据从 InnoDB 表复制到 MyISAM 表以进行存档。在这些备份中,会发生很多写入请求,但是几乎没有从这些存档表读取数据。这些表是否也能从使用 InnoDB 中受益,还是这只是浪费空间和 RAM?
答案1
将表从 MyISAM 转换为 InnoDB 将真正有利于并发写入和原子锁。
InnoDB 和 MyISAM 表的混合绝不会影响连接性能,除非这些连接尝试锁定完整的 MyISAM 表(极不可能),这样做EXPLAIN
总是有助于诊断查询。
关于第二个问题,由于它们是备份表并且几乎从未使用过,因此它们肯定会利用 MyISAM 的优势来尽可能提高写入性能。
记住这些参数 数据库引擎InnoDB:并发写入、细粒度锁定方面非常出色,但串行写入方面不太好,并且占用更多内存 数据库管理系统:非常轻量,串行写入性能出色,并发写入性能不佳,内存占用较小