3

背景

我需要FULLTEXT在服务器数据库上实现搜索MySQL(在 10k-200k 记录的大小范围内)。

到目前为止,数据库搜索是基于朴素的实现(LIKE查询),这显然是低效的,更不用说不可配置等了。

考虑了两种选择:

  1. 启用MySQL的原生 FULLTEXT (需要添加一个或多个MyISAM表 - 整个数据库InnoDB现在);

  2. 安装Sphinx.

(我们使用 PHP 5.2 并且升级不是一个选项,所以 InnoDB FULLTEXT 在这里是不可能的。)

问题

有性能方面的考虑。可以理解的是,实现FULLTEXT任何一种方式都会占用更多的磁盘空间,并给 CPU 带来更多的负担。

目标是找出多少。两种解决方案都将相互进行基准测试(当然还有现状)。我需要设置并执行这些测试。

我会采取的方法是:

  1. 用真实数据填充数据库(比如 100k 行);

  2. 衡量建立索引所需的时间;

  3. 通过插入/更新数千行来模拟重新索引的需要 - 再次分析所需的时间以及 CPU 和 RAM 使用情况;

  4. 在布尔和自然语言模式下使用一组短短语和长短语测试查询速度。

到目前为止相当简单,但任何建议都将不胜感激,因为我更多的是桌面/客户端应用程序开发人员,而且我已经走出了自己的舒适区。

问题

  1. 我错过了什么?这个测试场景是否可能产生有意义的结果?

  2. 如果不是 cron 脚本,那么监控服务器 CPU 和 RAM 使用情况的正确方法是什么?

我知道这是一个悬而未决的问题,但我希望它不会被关闭。

4

1 回答 1

3

这种情况看起来不错,我只是建议在 sphinx 中实现 delta 索引(仅索引自上次索引以来的更改)。

在监视时,您可以设置 cacti 或 munin 工具,但如果您仅将它们用于此测试,则 dstat 可能就足够了。

于 2012-11-18T07:41:52.427 回答