1
我正在使用Nagios插件来监视我们的rsyslog服务器,该服务器后端连接到MySQL数据库。该插件通过生成一个唯一的字符串,将其发送到syslog,然后查询MySQL数据库中的唯一字符串来操作,从而证明该服务正确地接收和存储消息。在MySQL LongText字段中搜索字符串的'正确'方法?
这个表是,不出所料,大(〜350万行,磁盘上2.1GB)和InnoDB格式。持有系统日志消息的列是LONGTEXT类型。
我目前在发送查询的形式为:
SELECT count(*) FROM allremote WHERE message LIKE '%check_rsyslogdb_1328869942%';
如果在这种情况下check_rsyslogdb_1328869942
是由插件记录唯一的字符串。
有没有更有效的方法让我接近这个查询?
我查看了FULLTEXT索引,但它们只是MyISAM,并且作为一项我们避免使用MyISAM的策略,因为它显然较差。
http://stackoverflow.com/questions/1381186/fulltext-search-with-innodb – 2012-02-10 12:01:22
'select 1 from ...... limit 1' would help a bit。而不是计算所有匹配的行,我们只找到一个匹配,然后返回1.如果没有返回结果,则表示没有找到结果。 – diolemo 2012-02-10 13:27:53
如果你有一个唯一的ID(auto_increment),那么你可以检查自上次检查以来的行。因此,如果您上次有ID 5000,只需在字符串匹配条件之前添加条件以确保ID> 5000即可。 – diolemo 2012-02-10 13:29:58