我有一个将日志写入数据库的软件,这些日志将存储大约 2-3 个月。少数人想随时查询这些日志。系统每秒平均写入 5000 行(1000 次批量插入),主键不存在,但不同列有 6 个索引。顺便说一句,表有 20 列,没有任何外键。
由于需要巨大的磁盘大小,我不想使用 innodb 表。如您所知,MyISAM 表的大小大约比相同的 innodb 表小三倍(或更多)。我计划每月使用不同的表并压缩比本月更早的表。myisam 表的压缩比使用 myisampack 实用程序的 innodb 更容易。由于这些原因,我想使用 myisam 表。
但我们知道 myisam 对腐败并不安全。如果 myisam 表已损坏,我不想丢失它们。它指示我将 innodb 用于实时日志。经过一小段时间(5 分钟或 1 小时或午夜)后,我想将我的记录放到 myisam 表中。但是使用“alter table ... engine=myisam”命令转换表需要很多时间来处理大量数据。
我可以使用不同的数据库并将 innodb 数据复制到 myisam 表,这是一种选择。但是我之前在复制时遇到了一些问题,我不确定是否会使用它。我认为的其他选项是双写记录(同时包括 innodb 和 myisam 表)。但这会降低查询和磁盘性能。
你对这种情况有什么建议?它可以是引擎转换建议或全新的架构建议。
谢谢,塞利姆