最好的数据类型来存储日志

时间:2019-05-26 19:25:59

标签: mysql sql performance

我有一个名为requests的MySQL表。它发展得如此之快。目前,它有300万行。另外,当前的表引擎是“ InnoDB”。

几天前,我收到此错误:

  

错误1114(HY000):表已满

通过将其添加到MySQL配置中,我已经解决了这个问题(我猜是暂时的):

innodb_data_file_path = ibdata1:10M:autoextend

但是有时候我的发球会掉下来,我必须重新启动才能使用。最近,我将该桌子空了,摆脱了掉下去的麻烦。

但是很快就会充满。知道如何解决该问题吗?我应该为该表使用其他引擎吗?我应该使用压缩的类型行吗?还是什么?

请注意,有时我需要从该表中进行选择,并且它在列上有一个索引(除pk之外)

1 个答案:

答案 0 :(得分:1)

您受到磁盘空间的限制。您必须注意这一点并采取行动,然后才能达到“满桌”状态。

如果将数据存储在MyISAM表中,则可以花两倍的时间才能获取“表已满”。如果您只是简单地写入磁盘文件(无数据库,无查询等),则可以在“磁盘已满”之前再进行一些压缩。

您需要“清除”旧数据吗?这样,您就可以继续接收新数据,而无需触及“表已满”。最好的方法是通过InnoDB和PARTITION BY RANGE(TO_DAYS(...))。如果清除一个月以上的任何东西,请使用每日分区。例如,对于90天,请使用每周分区。更多讨论:http://mysql.rjweb.org/doc.php/partitionmaint

您将如何处理数据?分析一下吗?搜索一下?您打算进行哪些SQL查询?回答那些;可能还有其他提示。