非常大的MySQL数据集

我正在运行Snort和MySQL一起进行日志logging,它正在生成ENORMOUS数据集(目前事件表超过了250万,我不知道究竟有多less,因为它在使用之前也只有250万很多记忆)。

不幸的是,这个数据不再是非常有用的,因为我无法在其他地方把它拉出来(存储过程导致服务器崩溃)。

我的问题是,有没有办法为这些庞大的数据集优化MySQL,或者这超出了MySQL的技术function,我需要去Oracle,MS SQL或PostgreSQL?

我们同时拥有一个Oracle和一个MS SQL Server实例,但这两个都是关键业务生产服务器,将其中任何一个脱机或抑制其能力将是非常糟糕的消息。

有关这个问题的任何想法?

像其他人所说 – 2.5M不是一个巨大的行数。 看看你的模式devise – 是否可以是你的报告运行全表扫描索引可以使用[警告:引入新的索引会降低插入性能]。

你是否试图优化innodb? 确保至less索引适合缓冲池内存。 尝试mysqltuner.pl或者如果你有更多的时间 – 进入mysqlperformanceblog.com 。

250万条logging应该没有问题。 共享模式将有所帮助。 此外,mysqltuner.pl(在另一个答案中提到)会警告你一些my.cnf问题 – 例如innodb_buffer_pool比索引的大小小。 肯定会运行的。 innodb_buffer_pool应该设置得尽可能高。

如果您有任何TEXT列,则涉及扫描大量行的任何查询将执行得更好,如果将这些列移出到单独的表中。 更好的方法是使用InnoDB插件,Percona Server或MariaDB,并为这些新的文本列表启用压缩。

也许innodb不是日志的最佳select?

我有一个集中的系统日志服务器,它的设置,使每个月的数据到不同的/新表,并有一个所有这些表join视图。 然后用myisampack压缩旧的日志,这样就占用了很less的空间,读取速度更快,成为只读。 它工作得非常快。